Node.js如何在同一个应用程序中与子域共享passportjs登录会话?

时间:2015-02-23 04:10:43

标签: node.js express subdomain passport.js

所以我有一个应用程序,我正在使用npm子域名,所以常规快递路线伪造成子域路线。

// use fake subdomain routes
app.use(subdomain({ base : 'localhost', removeWWW : true }));

// this looks like app.localhost:9200/login
router.get('/subdomain/app/login', login.login);

// then this posts to app.localhost:9200/app_login
router.post('/subdomain/app/app_login', passport.authenticate('local-login', {
      successRedirect : '/app_login_success',
      failureRedirect : '/app_login_failure',
      failureFlash : true
}));

当我通过app.localhost:9200登录时,我必须重新登录localhost:9200

登录一次并在两个路线中激活会话有哪些选项和解决方案?

1 个答案:

答案 0 :(得分:0)

您可以使用JSON Web令牌(JWT),这是一种处理本地身份验证的相当标准的方法。实质上,您将创建一个包含用户凭据(例如ID)的编码令牌,该令牌将在一定时间后自动过期。您的两台服务器都可以解码此令牌。然后在您的前端,您只需要在发送到任一域时将标头设置为包含此标记。请参阅JWT NPM module,您可以在Passport旁边找到无数的指南。