node.js - 用户登录后处理 MEAN 堆栈应用程序中的社交媒体集成

标签 node.js angular callback passport.js mean-stack

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

示例:john@xyzcompany.com

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

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

我正在使用 MEAN 堆栈来开发应用程序。

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

当涉及社交媒体帐户集成时,成功进行身份验证后,我能够从这些社交媒体向后端回调 URL 接收 accessToken。我需要将 token 链接到正确的用户。无论如何,我是否可以传递我的 JWT token 以及回调 URL 来识别哪个用户发出了请求,因为我无法根据用户社交媒体帐户中的电子邮件来识别该用户?

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

还有其他方法可以解决吗?我在网上查了一下,很少有人建议使用 Passport 。我不完全理解 Passport 是如何工作的,我只是觉得它只是一个中间件来验证用户的 API 请求,无论如何我都是使用自定义函数来做的。

有人可以解释一下是否可以使用通行证策略在回调 URL 中传递 JWT?

在 MEAN 堆栈应用程序中处理此类身份验证的正确方法是什么?自上周以来我一直被这个问题困扰,真的很期待一个好的解决方案。

最佳答案

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

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

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

关于node.js - 用户登录后处理 MEAN 堆栈应用程序中的社交媒体集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685478/

相关文章:

java - PBKDF2 - 无法使用 Node 和 Java 生成相同的 Base64 编码 key

android - 在 CameraX 中使用 CameraCaptureSession.CaptureCallback()

node.js - 使用 super 用户访问权限运行 pm2

angular - 添加 PayPal 付款方式 Ionic

angular - 错误 : Can't resolve all parameters for setupPlatform: (?,[对象对象],[对象对象])

Angular2 管道找不到名称

Java 8 推迟方法的执行

objective-c - 来自 C 回调中后台线程的通知

node.js - 从在代理后面运行的网站访问 Web 服务

node.js - 为什么同一个字符串有两个不同的缓冲区?