jquery - 第二次刷新后 Passportjs 忘记登录用户

标签 jquery node.js express passport.js

我拿了这个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/

相关文章:

node.js - 如何将 socket.io 与 webpack-hot-middleware 一起使用?

node.js - nodejs express req.session undefined

jquery - jquery中如何替换字符串的多个字符

jquery - ASP.Net MVC 4 和 JavaScript 框架 - AJAX 和 Unobtrusive 验证

javascript - 如何从静态源生成 crypto.createCipheriv 参数

node.js - WinXP 上的 IE 8 上的 Socket.io 连接多次触发

javascript - Node.js/Express - 如何考虑客户端数据库工作? (例如不能使用 require())

node.js - 通过 ajax 进行 Passport 身份验证

javascript - 内容未被从被覆盖的元素内部删除

当不在除 P、DIV、SPAN、TD 之外的 html 标签内时,jQuery 查找/替换 html 文本