我拿了这个example.(easy-node-authentication) 我更改了一些内容来处理单个页面,因此我使用 JQ 构建发布请求:
$(document).on('click','#submitLoginIDButton ', function (){
$.post( "/login", { "email" : $("#emailLoginID").val(), "password" : $("#passwordLoginID").val() })
.done(function( data ) {
console.log(data);
});
});
将一些路线更改为以下:
app.get('/',
function(req, res) {
if (req.user) {
var logged = true;
} else {
var logged = false;
}
res.render('index.ejs', {
title : "No More Miss",
userStatus : logged
});
});
app.post('/login',
passport.authenticate('local-login'),
function(req, res) {
res.send({ status: 'OK', user: req.user });
});
登录正常,如果我刷新它显示我已登录,但第二次刷新后它丢失了,知道为什么会发生这种情况吗?
最佳答案
您激活 Passport session 了吗?如果不初始化,刷新页面后授权信息将会丢失。
来自passport.js configure page :
If your application uses persistent login sessions, passport.session() middleware must also be used.
app.use(express.cookieParser());
app.use(express.session({ secret: 'keyboard cat' }));
app.use(passport.initialize());
app.use(passport.session());
Note that enabling session support is entirely optional, though it is recommended for most applications. If enabled, be sure to use express.session() before passport.session() to ensure that the login session is restored in the correct order.
关于jquery - 第二次刷新后 Passportjs 忘记登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24418248/