我正在开发NodeJS应用程序登录。与此问题相关的四条路线是
GET /admin/login -- Used to get the Login Page (1)
POST /admin/login -- Used to go to Controller (2)
POST /api/auth/login requireLogin -- Actual login happens here (3)
GET /admin/dashboard requireAuth-- Route to go after successful login (4)
路线定义:
(1) adminRoutes.get('/admin/login', HomeController.getLoginPage);
(2) adminRoutes.post('/admin/login', AdminController.postLoginPage);
(3) authRoutes.post('/api/auth/login', requireLogin, AuthenticationController.login);
(4) adminRoutes.get('/admin/dashboard', requireAuth, HomeController.index);
requireLogin
和requireAuth
var requireAuth = passport.authenticate('jwt', {session: false, failureRedirect: '/admin/login'}),
requireLogin = passport.authenticate('local', {session: false});
从(1)我填写登录详细信息并点击提交,表单操作将其带到(2)。对于(2),我有一个像这样写的方法;
(2)的方法
exports.postLoginPage = function(req, res, next){
request.post({url: 'http://localhost:3006/api/auth/login', form: req.body}, function(err, response, body){
console.log('outside if');
if(response.statusCode == '200'){
console.log('inside if 200');
var wegot = JSON.parse(response.body);
console.log(wegot.token);
res.header('Authorization', wegot.token);
res.redirect('/admin/dashboard');
}else{
console.log('if else err');
req.flash('error', body);
// return res.redirect('/admin/login');
return 'Unauthorized';
}
})
}
方法(3)
function generateToken(user){
return jwt.sign(user, authConfig.secret, {
expiresIn: 10080
});
}
function setUserInfo(request){
return {
_id: request._id,
email: request.email,
role: request.role
};
}
exports.login = function(req, res, next){
var userInfo = setUserInfo(req.body);
res.status(200).json({
token: 'JWT ' + generateToken(userInfo),
user: userInfo
});
}
从API(3)成功登录后,我需要重定向到(4)。但我要回到(1)。我知道登录成功,我也在日志上获得JWT令牌。
日志:
POST /api/auth/login 200 32.445 ms - 330
outside if
inside if 200
JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1YTI5MDQ3MGU4Nzc3YTM1OTQ2Mjk5YWEiLCJlbWFpbCI6InNwb25zb3JAZ21haWwuY29tIiwicm9sZSI6Im5pZ2h0IiwiaWF0IjoxNTEyNjQzODM0LCJleHAiOjE1MTI2NTM5MTR9.J5LqkfeSrRU4ukY9rIsFNUBArTLloynRsle4mkwTgpA
POST /admin/login 302 57.531 ms - 76
GET /admin/dashboard 302 2.690 ms - 68
GET /admin/login 200 1.581 ms - -
这可能是什么问题?我该怎么解决这个问题。如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
POST /admin/login 302 57.531 ms - 76 GET /admin/dashboard 302 2.690 ms - 68 GET /admin/login 200 1.581 ms - -
您的回复状态代码为302,表示您已被重定向。显然/admin/dashboard
不接受您的授权令牌。