Oauth 2 (Passport.js) 登录应该永远不会失败,对吧?
Oauth 2 (Passport.js) login should never fail, right?
如果我有 Google 的 Oauth 2 登录(使用 Passport。js/Express)并且用户之前从未访问过我的站点,则会发生以下情况:
选项 1:首次使用
用户 ->
点击 Google Oauth 2 登录 ->
后端发生 ->
用户已登录
选项 2:返回用户
用户 ->
单击 Google Oauth 2 登录 ->
后端发生 ->
用户已登录并且从数据库中检索了用户数据
选项 3:用户无法登录其 Google 帐户
用户->
点击GoogleOauth 2登录->
无法登录因为用户忘记了他的Googlepassword/email
同时,前两个选项将是相同的,除了 选项 1 我将发布到数据库和 Option 2 我将从数据库获取。
但是,第三个选项不是我的问题,当用户尝试登录 Google 时,他们已经被重定向到 accounts.google.com/signin/(...)
。我想说的是,如果出现选项 3,我真的不需要为这种情况编写任何代码。
因此,无论是新用户还是老用户,如果用户通过 oauth 2 访问我的网站,要么他们会成功登录 Google 并且我将获取数据,要么他们不会'无法登录并且 none 的用户信息将发送给我,但无论哪种方式,我在技术上都不必处理该操作失败,因为它永远不会?
为了提供一些上下文,我问这个的原因是因为我正在编写反序列化代码并且我意识到 done(null,user)
就足够了,因为反序列化永远不会出错,对吧?
选项 3
你是对的,你不必在这里写任何代码,因为你已经外部化登录到授权服务器。
选项 1
用户通过 POST 注册,该 POST 在授权服务器中创建用户 - 但不是在您自己的数据中。
选项 2
登录后将访问令牌发送到您的 API 以获取用户信息是很常见的。如果需要,您可以在自己的数据库中创建用户(如果该用户尚不存在)。
错误处理
通常授权服务器在某些情况下可能 return 错误响应给您,在这种情况下它会给您一个代码和描述 - 如 step 10 of my write up.
关于用户数据的更多信息
我的 User Data 博客 post 进一步详细探讨了如何识别新用户和现有用户,以备不时之需。
如果我有 Google 的 Oauth 2 登录(使用 Passport。js/Express)并且用户之前从未访问过我的站点,则会发生以下情况:
选项 1:首次使用
用户 ->
点击 Google Oauth 2 登录 ->
后端发生 ->
用户已登录
选项 2:返回用户
用户 ->
单击 Google Oauth 2 登录 ->
后端发生 ->
用户已登录并且从数据库中检索了用户数据
选项 3:用户无法登录其 Google 帐户
用户->
点击GoogleOauth 2登录->
无法登录因为用户忘记了他的Googlepassword/email
同时,前两个选项将是相同的,除了 选项 1 我将发布到数据库和 Option 2 我将从数据库获取。
但是,第三个选项不是我的问题,当用户尝试登录 Google 时,他们已经被重定向到 accounts.google.com/signin/(...)
。我想说的是,如果出现选项 3,我真的不需要为这种情况编写任何代码。
因此,无论是新用户还是老用户,如果用户通过 oauth 2 访问我的网站,要么他们会成功登录 Google 并且我将获取数据,要么他们不会'无法登录并且 none 的用户信息将发送给我,但无论哪种方式,我在技术上都不必处理该操作失败,因为它永远不会?
为了提供一些上下文,我问这个的原因是因为我正在编写反序列化代码并且我意识到 done(null,user)
就足够了,因为反序列化永远不会出错,对吧?
选项 3
你是对的,你不必在这里写任何代码,因为你已经外部化登录到授权服务器。
选项 1
用户通过 POST 注册,该 POST 在授权服务器中创建用户 - 但不是在您自己的数据中。
选项 2
登录后将访问令牌发送到您的 API 以获取用户信息是很常见的。如果需要,您可以在自己的数据库中创建用户(如果该用户尚不存在)。
错误处理
通常授权服务器在某些情况下可能 return 错误响应给您,在这种情况下它会给您一个代码和描述 - 如 step 10 of my write up.
关于用户数据的更多信息
我的 User Data 博客 post 进一步详细探讨了如何识别新用户和现有用户,以备不时之需。