【发布时间】:2017-01-04 08:13:28
【问题描述】:
我目前在使用护照本地猫鼬插件实施护照js期间遇到以下问题。帐户创建和登录工作正常。但是,在我登录后,passport 永远不会将我识别为已登录的用户。
我使用了以下代码:
在我的用户模型中:
User.plugin(passportLocalMongoose);
在 app.js 中(这个包含顺序是否正确?):
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser('keyboard cat'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({ secret: 'keyboard cat' }));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
在我的路线中:
router.post('/login', passport.authenticate('local'), function(req, res) {
res.json({ loggedIn: true });
});
返回true,但以下一直返回false(登录后):
req.isAuthenticated()
谁能告诉我可能是什么原因?
谢谢!
【问题讨论】:
-
您是否正在尝试实施一种快速方法来确保您的用户在访问您的应用程序的某些部分之前已经过身份验证?如果是这样,我会建议您创建一个 express.js 中间件的简单方法,该中间件将检查用户是否登录,如果没有 - 将重定向到
/login页面。 -
res.json({ loggedIn: true });将始终返回 true。res.json({loggedIn: req.isAuthenticated()})是否返回 true? -
res.json({ loggedIn: true });并不总是返回 true。 passport.authenticate('local') 是认证失败时不调用 next() 的中间件。
标签: javascript node.js mongodb express passport.js