PassportJS-同时使用多个本地策略
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PassportJS-同时使用多个本地策略相关的知识,希望对你有一定的参考价值。
我需要使用Passportjs实现两个本地策略,这可能必须同时可用。
这里是场景:假设我有一个用户和一个房间,每个房间都有用于身份验证的名称和密码。显然,我可以使用不同的名称(例如'user-local'和'room-local')以及成功的名称和密码验证来定义两个单独的本地策略,以返回对应的对象-user
或room
。我还可以在serializeUser
/ deserializeUser
方法中区分对象类型。我遇到的问题是req.login
方法在每次成功身份验证后填充一个和一个唯一的变量-req.user
。因此,如果我以用户身份成功认证,则req.user
将保存我的User
对象。如果以后我作为房间进行身份验证,则现在已经用req.user
对象填充了相同的Room
,将覆盖先前的User
对象。这给我带来麻烦,因为我需要通过两个对象的req.user
访问特定的对象方法和字段(当两个身份验证均成功完成时)。req.isAuthenticated
方法也是如此-它将根据上一个身份验证结果返回true
/ false
,并覆盖前一个。
我该怎么做?
如果用户能够立即使用会议室凭据登录而不必先使用用户的凭据登录,那么您将拥有2种身份验证逻辑,以后可以相互汇总。在再次登录之前,我会将其存储在会话中,或者实现一个新的身份验证系统,该系统将用户/房间信息存储在不同的req
变量中。
[Passportjs帮助您处理具有多种不同策略类型的单用户身份验证逻辑,比方说每个会话一个用户(建议使用会话)。
这对我有帮助https://github.com/jaredhanson/passport/issues/287
只需设置多个本地策略并在您的路线中使用适当的策略。
以上是关于PassportJS-同时使用多个本地策略的主要内容,如果未能解决你的问题,请参考以下文章