所有
我对Passport.js很新,现在,我想要的是检查用户是否经过身份验证以访问某个路由,并且我在该路由上添加了passport auth,但它似乎是一个交易循环:
它支持的行为是:当用户点击该URL时,如果没有,则重定向到/ auth,否则只是继续。
app.use("/url-must-be-auth",
passport.authenticate("local", {
successRedirect: '/url-must-be-auth',
failureRedirect: '/auth'
})
)
passport.serializeUser(function(user, done) {
debugger;
done(null, user.email);
});
passport.deserializeUser(function(email, done) {
debugger;
User.findOne({
where: { email: email }
})
.then(function(user) {
debugger;
done(null, user);
})
.catch(function(err) {
debugger;
done(err, null);
});
});
deserilize部分永远不会被调用。
无论如何,只要忘记我所做的事情,任何人都可以帮助解决这个问题的正确方法吗?
答案 0 :(得分:1)
passport.authenticate()
应仅用于登录或注册路线
您可以编写将检查用户身份验证的中间件功能,否则重定向到登录页面
function isAuthenticated(req, res, next){
if(req.isAuthenticated())
next();
res.redirect('/login');
}
并将其作为某条路线的第一个函数传递:
app.get('/url-must-be-auth', isAuthenticated, function(req, res){
//response
});