PassportJS-同时使用多个本地策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PassportJS-同时使用多个本地策略相关的知识,希望对你有一定的参考价值。

我需要使用Passportjs实现两个本地策略,这可能必须同时可用。

这里是场景:假设我有一个用户和一个房间,每个房间都有用于身份验证的名称和密码。显然,我可以使用不同的名称(例如'user-local'和'room-local')以及成功的名称和密码验证来定义两个单独的本地策略,以返回对应的对象-userroom。我还可以在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-同时使用多个本地策略的主要内容,如果未能解决你的问题,请参考以下文章

Express + PassportJS 无法读取 flash 消息

Passportjs 成功回调从未被调用

FlyWay 迁移策略

本地上传策略

本地策略域策略

怎么查看linux安全策略设置