Node.js 重新启动节点后的req.user

Node.js 重新启动节点后的req.user,node.js,passport.js,Node.js,Passport.js,我已附加passportjs以验证我站点上的用户。我使用localStrategy,一切正常。但我有一些问题(可能是passportjs的特性)-重新启动节点后,req.user未定义,用户应该再次登录 如何在启动服务器上初始化req.user???您需要将用户登录信息存储在Redis中,例如,因为重新启动后,您设置的所有变量都将未定义LocalStrategy在登录后将用户凭据存储在内存中。这意味着重新启动节点时,凭据将不可避免地丢失 但是,passport在express中使用了会话cook

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


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

您需要将用户登录信息存储在
Redis
中,例如,因为重新启动后,您设置的所有变量都将未定义LocalStrategy在登录后将用户凭据存储在内存中。这意味着重新启动节点时,凭据将不可避免地丢失

但是,passport在express中使用了会话cookie功能,因此您可以使用标准的express方式持久化cookie

使用
redistore
模块非常容易,您可以将express对象传递到该模块:

var express = require('express');
var RedisStore = require('connect-redis')(express);
在设置passport之前,请在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实例