最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

PassportJS

IT培训 admin 16浏览 0评论

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帮助您处理具有多种不同策略类型的单用户身份验证逻辑,比方说每个会话一个用户(建议使用会话)。

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帮助您处理具有多种不同策略类型的单用户身份验证逻辑,比方说每个会话一个用户(建议使用会话)。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论