Node.js 用户登录后,在MEAN stack应用程序中处理社交媒体集成

Node.js 用户登录后,在MEAN stack应用程序中处理社交媒体集成,node.js,angular,callback,passport.js,mean-stack,Node.js,Angular,Callback,Passport.js,Mean Stack,用户只能使用其工作电子邮件在我的应用程序中创建帐户 示例:john@xyzcompany.com 创建帐户后,他可以将多个社交媒体帐户链接到他的个人资料 示例:john@gmail.com,john2@gmail.com 我正在使用MEAN stack开发应用程序 当用户登录到我的应用程序时,我正在创建一个JWT令牌来授权他将来向服务器发出的所有请求 当涉及到社交媒体帐户集成时,在成功验证后,我能够从这些社交媒体接收AccessToken到后端回调URL。我需要将令牌链接到正确的用户。我是否可以

用户只能使用其工作电子邮件在我的应用程序中创建帐户

示例:
john@xyzcompany.com

创建帐户后,他可以将多个社交媒体帐户链接到他的个人资料

示例:
john@gmail.com
john2@gmail.com

我正在使用MEAN stack开发应用程序

当用户登录到我的应用程序时,我正在创建一个JWT令牌来授权他将来向服务器发出的所有请求

当涉及到社交媒体帐户集成时,在成功验证后,我能够从这些社交媒体接收AccessToken到后端回调URL。我需要将令牌链接到正确的用户。我是否可以将我的JWT令牌与回调URL一起传递,以确定是哪个用户发出了请求,因为我无法根据其社交媒体帐户中的电子邮件识别该用户

我可以使用
socket.io
解决这个问题。但是我觉得没有必要使用套接字进行简单的身份验证

有没有其他办法解决这个问题?我在网上调查过,很少有人建议使用passport。我不完全理解passport是如何工作的,我只是觉得它只是一个验证用户API请求的中间件,我正在使用自定义函数进行验证

有人能解释一下是否可以使用passport策略在回调URL中传递JWT吗


在MEAN stack应用程序中处理此类身份验证的正确方法是什么?从上周开始,我就一直在处理这个问题,真的很期待一个好的解决方案

我在一个大型应用程序中遇到过这种情况,我们用来处理它的方法是将jwtToken存储在redis中,然后在用户cookie的帮助下检索回来。让我详细解释一下-

  • 当用户打开登录页面时,为用户发送新Cookie。cookie应该包含一些唯一的id或代码,我们将根据这些id或代码保存JWT令牌,。例如:
    res.cookie('jwtIdentifier',newid())
  • 现在,当用户登录时,生成JWT令牌并根据cookie jwtIdentifier的值将其保存到您的redis。例如:
    redisHelper.set(req.cookies.jwtIdentifier,JWTTOKEN)
  • 最后,当登录成功并且用户被重定向回您的应用程序时,您可以使用cookie再次为相应的用户检索JWT令牌。例如:
    redisHelper.get(req.cookies.jwtIdentifier)
    这将返回JWT令牌,然后您可以在应用程序中为特定用户使用该令牌

  • 希望清楚,如果您对此实施有任何疑问,请告诉我;)

    您可以尝试使用此处描述的客户端facebook身份验证

    在这种情况下,在angular应用程序中,您的应用程序令牌旁边有facebook令牌,您可以将它们发送到后端以识别当前用户


    在后端部分,您将调用facebook从accessToken获取配置文件数据,然后存储用户配置文件id,并且根据您的业务,您可能还需要存储访问令牌,用于用户API请求的令牌管理是我已经做过的。我正在寻找一个解决方案来处理后端社交媒体的回调。我不是那个意思。您提到的是,您希望在登录后识别请求来自的用户,以便您可以在应用程序中使用适当的令牌进行进一步请求。对吗?如果是这样的话,我认为我上面解释的方法应该是有效的