简而言之,我有一个登录页面,在其中我的
以下是我的登录页面的业务部分:
我在
在调试器中,
在浏览器(Chrome)中,我被告知我正在向
有人能告诉我为什么我的
POST
请求在Express 4中变成了GET
。以下是我的登录页面的业务部分:
<form id='loginForm' action='/login' method='post'>
<table>
<tr>
<td><input type='text' name='username' /></td>
</tr>
<tr>
<td><input type='text' name='password' /></td>
</tr>
<tr>
<td><button type='submit'>Submit</button></td>
</tr>
</table>
</form>
这是我设置的路由:
// Express 4
var router = express.Router();
router.get('/login', function(req, res) {
res.render('./login.hbs', { message: req.flash('loginMessage') });
});
router.post('/login', passport.authenticate('local-login', {
successRedirect: '/welcome',
failureRedirect: '/login',
failureFlash : true
}));
passport.use('local-login',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback : true
},
function(req, email, password, next) {
User.findOne({ 'authLocal.email' : email }, function(err, user) {
console.log('Inside local-login strategy with findOne A');
[snip]
我在
GET /login
的res.render
和local-login
策略中的findOne()
调用上设置了断点。当我点击“提交”按钮时,捕获事件的断点位于router.get()
代码中。在调试器中,
req.method
是GET
。在浏览器(Chrome)中,我被告知我正在向
/login
进行POST
并返回302。还有一个挂起的GET
到/login
,返回200代码。这两个代码(302、200)是调试器停在router.get()
时出现的。即使清除浏览器缓存也无济于事。有人能告诉我为什么我的
POST
请求没有被处理吗?