req.user重启节点后

我已附加passportjs来validation我的网站上的用户。 我使用localStrategy,一切正常。 但我有一些问题(可能是passportjs的function) – 重新启动节点后,req.user未定义,用户应该再次login。

我应该怎么做启动服务器上初始化req.user?

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

但是,护照在快递中使用会话cookiefunction,因此您可以使用标准快递方式保存Cookie。

使用传递Express对象的RedisStore模块很容易:

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

在设置护照之前,请启用会话持久性以便快速重新发送:

 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实例。

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