Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReactJs+;Webapi如何进行外部身份验证?_C#_Authentication_Reactjs_Asp.net Web Api_Oauth - Fatal编程技术网

C# ReactJs+;Webapi如何进行外部身份验证?

C# ReactJs+;Webapi如何进行外部身份验证?,c#,authentication,reactjs,asp.net-web-api,oauth,C#,Authentication,Reactjs,Asp.net Web Api,Oauth,我正在建立一个reactjs网站,该网站将与asp.net web api 2通信以保存和检索数据 但我不知道如何做到这一点 我知道要在高水平上实现这一点 用户来到我的网站并点击注册/登录 选择要使用的提供商(谷歌、facebook等)。我只想支持外部提供商(即我不想处理用户名/密码) 它发送到站点的已验证部分的用户 用户单击“添加课程”,通过ajax向webapi发送带有某种令牌的数据,以证明他们可以访问这些方法 我不知道如何实现我看到的这个问题 我猜是在处理身份验证部分?然后,一旦他们通过身

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

但我不知道如何做到这一点

我知道要在高水平上实现这一点

  • 用户来到我的网站并点击注册/登录
  • 选择要使用的提供商(谷歌、facebook等)。我只想支持外部提供商(即我不想处理用户名/密码)
  • 它发送到站点的已验证部分的用户
  • 用户单击“添加课程”,通过ajax向webapi发送带有某种令牌的数据,以证明他们可以访问这些方法
  • 我不知道如何实现我看到的这个问题

  • 我猜是在处理身份验证部分?然后,一旦他们通过身份验证,它就必须通过webapi保存在我的数据库中,以便它了解这个新用户
  • Reactjs必须阻止用户访问安全页面,直到他们通过身份验证
  • Web api必须为该会话的用户生成令牌,以便他们能够访问Web api(我想阻止人们使用我的api)
  • 有没有一些简单的例子来说明如何做到这一点

  • 我猜是在处理身份验证部分?一旦他们通过身份验证,它就必须通过webapi保存在我的数据库中,以便它了解这个新用户
  • 最好在这里使用第三方身份验证库,这样可以使用类似的策略为您进行身份验证。这将在认证后为您提供来自Facebook的Oauth访问令牌。现在,您可以将此令牌保存在cookie(或本地存储)中,请查看

    您应该将其存储在数据库中吗

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

  • Web api必须为该会话的用户生成令牌,以便他们能够访问Web api(我想阻止人们使用我的api)

  • 这可以通过使用来轻松实现。请注意,您必须在本地将JWT存储在客户端,与FB Google oauth令牌一起存储(或者您可以通过将其存储在DB?中将其降级为单个API。这是一种设计选择,我更愿意单独存储它们,以节省大量麻烦)。

    很酷,我不确定是否可以使用passport,因为我认为我需要一些节点。我猜我必须将令牌保存在数据库中。否则,当用户请求获取(比如)所有课程时,我怎么知道用户是否真的是他们所说的人?还是我遗漏了什么?你有什么快速的例子吗。我不清楚你所说的“将其降级为一个api”是什么意思。我宁愿采用更简单的方法,如果需要的话,在db中的两个字段中将其分开。