用户只能使用他的工作电子邮件在我的应用程序中创建一个帐户。
示例:john@xyzcompany.com
创建帐户后,他可以将多个社交媒体帐户链接到他的个人资料。
示例:john@gmail.com
,john2@gmail.com
我正在使用MEAN堆栈来开发App。
当用户登录我的应用程序时,我正在创建一个JWT令牌,以授权其将来向服务器发出的所有请求。
当涉及到社交媒体帐户集成时,在成功认证之后,我能够从这些社交媒体接收到后端回调URL的accessTokens。我需要将令牌链接到正确的用户。无论如何,因为我无法根据其社交媒体帐户中的电子邮件来识别用户,所以我可以将JWT令牌与回调URL一起传递以识别哪个用户发出了请求吗?
我能够使用socket.io
解决此问题。但是我觉得没有必要使用套接字进行简单的身份验证。
还有其他解决方法吗?我在网上研究过,很少有人建议使用护照。我不完全了解护照的工作原理,我只是觉得它只是一种中间件,用于验证来自用户的API请求,无论如何我都在使用自定义功能进行此操作。
有人可以解释是否有可能使用护照策略在回调URL中传递JWT?
在MEAN Stack应用程序中处理此类身份验证的正确方法是什么?自上周以来,我一直在关注这个问题,非常期待一个好的解决方案。
答案 0 :(得分:0)
我在一个大型应用程序中遇到过这种情况,我们用来处理它的方法是将jwtToken存储在redis中,然后在用户cookie的帮助下将其取回。让我更详细地解释它-
res.cookie('jwtIdentifier', newid())
redisHelper.set(req.cookies.jwtIdentifier, JWTTOKEN)
redisHelper.get(req.cookies.jwtIdentifier)
这将带给您JWT令牌,然后您就可以在该应用程序中为该特定用户使用该JWT令牌。希望很清楚,如果您对此实现有任何疑问,请告诉我;)
答案 1 :(得分:0)
您可以按照此处所述尝试使用客户端Facebook身份验证
https://theinfogrid.com/tech/developers/angular/facebook-login-angular-rest-api/
在这种情况下,在角度应用程序中,您的应用程序令牌旁边有Facebook令牌,您可以将它们发送到后端以标识当前用户。
在后端部分,您会打电话给facebook以从accessToken中获取个人资料数据,然后存储用户个人资料ID,并且根据您的业务,您可能还需要存储访问令牌