我正在使用node.js和express.js以及使用MVC Architecture进行护照认证的应用程序来构建。我严格遵循了有关如何使用本地策略实施和集成护照身份验证的教程。该策略似乎运作良好。在我正在处理身份验证的控制器中(使用passport.authenticate),考虑到我提交与数据库中实例匹配的详细信息,总是执行successRedirect。但是,在重定向到successRedirect所指向的位置之后,我得到的是GET请求,错误500。此后,如果尝试访问其他路由,我仍然会遇到相同的错误,因此无法显示所需的视图模板。但是,如果我尝试访问相同的路由而不尝试登录,则GET请求将成功执行,并显示statusCode 200。
我得到的确切错误是: GET / dashboard 500 4.313 ms-941
users.js路由
var usersController = require('../../controllers/usersController');
/* POST login */
router.post('/login',usersController.loginaccount);
usersController.js
module.exports.loginaccount = function (req,res,next) {
passport.authenticate('local',{
successRedirect: 'dashboard',failureRedirect: '/users/login',failureflash: true
}) (req,next);
}
index.js路由
router.get('/dashboard',ensureAuthenticated,indexcontroller.dashboardPage);
function ensureAuthenticated(req,next) {
if (req.isAuthenticated())
return next();
else{
req.flash('error_msg','Please log in to view this resource');
res.redirect('/users/login');
}
}
尝试登录后的命令行:
执行(默认):SELECT id
,firstname
,lastname
,email
,username
,password
,address
,{{ 1}},createdAt
来自updatedAt
,clients
位于client
。client
='nikolaisennn'LIMIT 1;
序列化用户
POST /用户/登录302 144.266毫秒-74
反序列化用户
用户ID:65
GET / dashboard 500 4.313 ms-941
我在这个问题上停留了一段时间,试图在线查找解决方案,但是我并没有真正找到所需的东西。我确定我缺少一些小东西,但是我不知道它是什么。