angularjs - 如何让用户使用 Express 和 oAuth2 在 Angular 中的多个设备上登录?

标签 angularjs node.js express oauth jwt

我试图让一个用户在多个设备上登录到同一个用户名。在后端,我们通过 oauth2orize npm 包使用 node/express rest api 和 oAuth2 JWT token 。

目前,我们后端身份验证的工作方式是用户登录后,会收到一个 JWT token 和一个 JWT 刷新 token 。当用户注销时, token 将失效。我们遇到的问题是用户将在一台计算机上登录,然后在另一台计算机上登录同一帐户。当第二次登录发生时,将向用户提供新 token 和刷新 token 。现在,当用户返回到第一台计算机时,刷新 token 无效,导致用户退出。

一个解决方法是我们尝试在 cookie 中保留一个 sessionId,但 Angular 似乎在每次请求时都返回一个新的 sessionId。以下是请求的示例。

 -- session --
l3s-kZCEUaz8TYhElVtARIwbl6PKTm_o
{ cookie: 
   { path: '/',
     _expires: Fri Aug 05 2016 00:23:44 GMT+0000 (UTC),
     originalMaxAge: 31449600000,
     httpOnly: true } }

-- session --
hN961RAc2YSlmzngr3R6zXuJnp4cFF_P
{ cookie: 
   { path: '/',
     _expires: Fri Aug 05 2016 00:23:46 GMT+0000 (UTC),
     originalMaxAge: 31449600000,
     httpOnly: true } }

任何有关让 Angular 通过 cookie 返回正确的 sessionId 的帮助或有关如何处理多个登录的任何其他建议都将不胜感激。

最佳答案

您尝试的方法接近解决方案。只生成一个 randomString 而不是获取 sessionId。然后在更新 token 时检查 tokenId 和 randomString 是否相同。如果不是,则添加为新登录名,否则更新当前 token 。同样的检查也适用于注销方法。

通过应用此相同的用户将获得用于登录不同设备的不同 token ,并且 jwt token 到期将根据每个设备的登录持续时间工作。

关于angularjs - 如何让用户使用 Express 和 oAuth2 在 Angular 中的多个设备上登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923864/

相关文章:

javascript - Angular JS Controller 初始化错误

javascript - 我必须点击按钮两次才能添加评论

javascript - 使用 Express.js 和 Node.js 进行多级路由

node.js - 指定根文件夹 express-http-proxy

javascript - 如何通过AngularJS中的ng-repeat动态创建的id获取元素

python - 如何处理在 javascript 中生成并在 python DRF 中使用的请求主体 JSON 字段的命名约定差异?

node.js - Alexa 技能中的搜索功能

javascript - 为什么使用 grunt-contrib-cssmin 会改变我的 css 而它应该只缩小它

javascript - Node : Testing with sinon and async/await

node.js - Nuxt Express 中间件获取请求中未定义 req.query