我目前在執行護照js和護照本地貓鼬插件時遇到以下問題。帳戶創建和登錄正常工作。然而,我在護照登錄後,從來沒有確定我爲已登錄用戶護照本地貓鼬req.user undefined
我用下面的代碼片段:
在我的用戶模型:
User.plugin(passportLocalMongoose);
在應用.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頁面。 – chridam
'res.json({loggedIn:true}); '將永遠回報真實。 res.json({loggedIn:req.isAuthenticated()})是否返回true? –
res.json({loggedIn:true}); 並不總是返回true。 passport.authenticate('local')是當身份驗證失敗時不會調用next()的中間件。 – user2817219