我是一个经验丰富的Ruby (Sinatra,Event Machine,Warden等)开发人员,并且决定教自己Node.js
我现在已经写了足够多的Node了,我对它感到非常舒服,现在我感到更加雄心勃勃了。我想连接一个简单的Sails.js应用程序和一个论坛与NodeBB一起构建,使我的用户可以登录到一个,并自动登录到另一个。
我希望这些用户可以使用role-based authentication访问Sails应用程序的各个部分,也可以访问论坛,因此他们需要共享一个通用的RBAC模型。
Passport适合这样做吗?如果是的话,你有任何例子的链接吗?
发布于 2014-02-23 14:56:19
要在请求中持久化会话,Passport依赖于Connect,而Connect又依赖于包含连接会话id的加密cookie。要在多个应用程序中使用相同的会话,您需要同步Express / Connect cookie解析器,并同步或共享会话和用户模型。您可能需要使用外部会话存储(如Redis或Mongo),并可能将用户数据库与单个应用程序数据库分开。此外,您还需要将cookie解析器秘密复制并粘贴到每个应用程序中。
不过,这并不是最好的方法。Passport的制造商还发布了一个开源OAuth2服务器,您可以使用它(与Passport的OAuth 2身份验证支持相结合)为您想要绑定的所有应用程序提供身份验证。对于您的问题,这是一个更加健壮和可扩展的解决方案,因为您不必担心同步机密和共享数据库。此外,它还允许您编写任何类型的应用程序(不一定在节点中),并且仍然实现共享单点登录。
(如果这听起来仍然比它的价值更大的努力,你总是可以使用一个外部身份提供者。基于谷歌帐户的OpenID不需要设置,与Passport无缝集成,让谷歌完成所有的工作。)
https://stackoverflow.com/questions/21964343
复制相似问题