如何处理sails.js SPA上的多个身份验证策略?
我正在构建一个单页面应用程序,前端使用Angular,后端使用sailsjs。目前我正在使用sails-auth(内部使用passportjs)将我的身份验证逻辑绑定到我的用户模型。
我在前端安装并可用多个护照提供者,例如passport-github
和passport-facebook
,但也有一个经典的passport-local
,以便用户只需使用用户名和密码进行注册和登录。
我希望我的客户端(单页面应用程序和可能的其他应用程序)在身份验证之后使用令牌而不是cookie/会话,以便更容易进行扩展,并且跨域请求也将更加容易。这也将使移动集成变得更加容易。
我知道必须使用OAuth提供程序回调函数,在此我想要实现的流程如下:
我知道可以通过将sessionAuth策略替换为可以从标头读取令牌并查询Tokens
模型的tokenAuth
策略,但我的问题是:
- 当使用用户名/密码登录时,请求可以通过简单的AJAX调用进行,因此很容易将令牌传递回SPA。当使用像github等提供程序时,当回调被调用时,我应该将令牌动态嵌入到正在服务的HTML中吗?
policies/passport.js
显示,默认情况下它依赖于内置会话以持久化登录/序列化和反序列化userID。 我如何将其与sails内置会话解耦,以便为用户生成令牌并将令牌嵌入到我的主页中返回?提前致谢!