我正在使用passport.js与 express server我有 example repo running在端口 3000 上。
我希望能够像示例中那样使用端口 3000 使用 Passport 登录,并在不同端口(8000 和 9000)上运行的另外两个 Node 服务器上创建 session 。所有 3 个服务器都位于本地主机上。
在我想要的其他服务器之一上
app.all('*', require('connect-ensure-login')
.ensureLoggedIn("http://localhost:3000/login"));
只有当用户登录 localhost:3000 时才能访问整个其他服务器。
如果我导航到http://localhost:8000/somepage,则使用上面建议的代码它将重定向到 http://localhost:3000/login我是否登录3000。它不会识别我已登录 3000。
最佳答案
是的,可以。您只需要它们都共享同一个 session 存储即可。 session 存储有很多选项; here is a fairly complete list 。最简单的可能是 session 文件存储,因为它不需要您运行任何其他数据库或内存缓存服务。您可以将其配置为使用特定路径来存储 session ,以便您可以使所有三个服务器看起来在同一个位置:
var session = require( 'express-session' );
var FileStore = require( 'session-file-store' )( session );
app.use( session( {
store: new FileStore( {
path: '/path/to/shared/session/storage/directory',
} ),
secret: 'keyboard cat',
} ) );
关于node.js - 我可以使用一台服务器的相同 Passport.js session 登录其他服务器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35436422/