如何进行外部认证?

本文关键字:认证 外部 何进行 | 更新日期: 2023-09-27 18:02:44

我正在建立一个reactjs网站,将与asp.net web api 2通信,以保存和检索数据。

但是我不知道怎么做。

我知道要在高水平上完成这个,应该是这样的

  1. 用户来到我的网站,点击注册/日志
  2. 选择要使用的提供商(google, facebook等)。我只是想支持外部提供商(即我不想不得不处理用户名/pwds)
  3. 发送到站点已验证部分的用户
  4. 用户点击"添加课程",数据通过ajax发送到webapi,带有某种令牌来证明他们有权访问这些方法。

我不确定如何实现这个问题,我看到的是

  1. Reactjs我猜是处理认证部分?然后,一旦他们通过身份验证,它必须保存在我的数据库通过webapi,所以它知道这个新用户?
  2. Reactjs必须阻止用户访问安全页面,直到他们通过身份验证
  3. Web api必须为该会话的用户生成令牌,以便他们可以访问Web api(我想阻止人们使用我的api)。

是否有一些简单的例子在那里如何实现这一点?

如何进行外部认证?

  1. Reactjs我猜是处理认证部分?通过身份验证后,需要通过webapi将其保存在mydb中,这样它就知道这个新用户

最好使用一些第三方认证库,比如PassportJS,它使用Passport-Facebook等策略为你做认证。这将在身份验证时为您提供来自Facebook的Oauth访问令牌。您现在可以将此令牌保存在cookie(或localStorage)中,查看安全注意事项。

应该存储在数据库中吗?以下是一些关于它的争论。

  • Reactjs必须阻止用户访问安全页面,直到他们通过身份验证
  • 这可以通过检查它们是否有一个有效的令牌来完成。

  • Web api必须为该会话的用户生成令牌,以便他们可以访问Web api(我想阻止人们使用我的api)。
  • 这可以通过使用JSON Web令牌轻松实现。请注意,您必须将JWT本地存储在客户端,以及FB-Google oauth令牌(或者您可以将其存储在DB中,从而将其降级为单个API)。这是一种设计选择,我更喜欢将它们分开存储,这样可以节省很多麻烦。