重启节点后的req.user

时间:2014-08-16 08:12:23

标签: node.js passport.js

我已经附上了passportjs来验证我网站上的用户。我使用localStrategy,一切正常。但我有一些问题(可能是passportjs的功能) - 重启节点后,req.user未定义,用户应该再次登录。

如何在启动服务器上初始化req.user?

2 个答案:

答案 0 :(得分:1)

您需要在Redis中存储用户登录信息,例如因为重新启动后,您设置的所有变量都将是未定义的

答案 1 :(得分:1)

LocalStrategy在登录后将用户凭据存储在内存中。这意味着当您重新启动节点时,凭据将不可避免地丢失。

但是,护照确实使用了快递中的会话cookie功能,因此您可以以标准快速方式保留cookie。

使用快递对象传递的RedisStore模块非常简单:

var express = require('express');
var RedisStore = require('connect-redis')(express);

在设置护照之前,请在express中启用会话持久性redis:

app.use(express.cookieParser());
app.use(express.session({ 
  secret: "a-secret-token", 
  store : new RedisStore({ 
    host : 'redis-hostname', 
    port : 'redis-port', 
    user : 'redis-username', 
    pass : 'redis-password' 
  }),
  cookie : {
    maxAge : 604800 // one week
  }
}));
app.use(passport.initialize());
app.use(passport.session());

您需要在计算机上安装redis,并更改上面的详细信息以匹配您要连接的redis实例。