如何在sails.js SPA上处理多个身份验证策略?

Tri*_*eur 15 architecture authentication single-page-application sails.js passport.js

如何在sails.js SPA上处理多个身份验证策略?

我正在构建一个基于Angular构建在前端的单页应用程序和用于后端的sailsjs.现在我正在使用sails-auth(内部使用passportjs)将我的身份验证逻辑绑定到我的用户模型.

我在我的前端安装了多个护照提供商,例如passport-githubpassport-facebook,但也是经典的,passport-local这样用户也可以使用他的用户名和密码进行注册和登录.

我希望我的客户(单页应用程序,以及将来可能有其他人)在auth之后使用令牌而不是cookie /会话,以便更容易扩展,跨域请求也将更容易.它还将使移动集成变得更加容易.

我知道我必须为OAuth提供程序使用回调,这是我的目标:

在此输入图像描述

我知道我可以sessionAuth通过一个tokenAuth策略来替换我的sail-auth的策略,该策略可以从头部读取令牌并查询Tokens模型,但我的问题是:

  • 使用用户名/密码进行登录时,可以通过简单的AJAX调用进行请求,因此很容易将令牌传递回SPA.当使用github等提供程序时,在调用回调时,我是否应该将令牌动态地嵌入到我正在服务的HTML中?
  • sail-auth policies/passport.js显示默认情况下它依赖于内置会话来持久登录/序列化和反序列化userID.如何将其与sails内置会话分离,以便为用户生成令牌并使用嵌入的令牌回送我的索引?

先感谢您!

r0h*_*rma 1

在身份验证路线上,您可以在后端进行基于 Passport.js 的身份验证(没有会话),使用令牌tokenAuth并将令牌转发给用户。

然后,对于安全路由,您可以verifyToken在策略中发出调用(拦截每个路由)。

免责声明:我自己还没有尝试过。