C# ASP.NET核心MVC/WebAPI身份验证方案加匿名

C# ASP.NET核心MVC/WebAPI身份验证方案加匿名,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个网站加上API我写的问题。如果这有关系的话,它们在同一个项目中 简化为最简单的形式,它是一个目录网站和API。数据库中有产品和显示产品信息的页面。您还有其他页面,允许编辑此信息和添加新产品等 有三种方法可以做到这一点: 匿名用户可以在网站上列出产品并查看有关产品的公共信息 登录用户可以在网站上列出、查看(包括私人信息)、编辑、创建和删除产品 具有有效API密钥的用户可以使用API列出、查看(包括私人信息)、编辑、创建和删除产品 我遇到的问题是,网站使用AJAX调用API,而这些调用只有在

我有一个网站加上API我写的问题。如果这有关系的话,它们在同一个项目中

简化为最简单的形式,它是一个目录网站和API。数据库中有产品和显示产品信息的页面。您还有其他页面,允许编辑此信息和添加新产品等

有三种方法可以做到这一点:

  • 匿名用户可以在网站上列出产品并查看有关产品的公共信息
  • 登录用户可以在网站上列出、查看(包括私人信息)、编辑、创建和删除产品
  • 具有有效API密钥的用户可以使用API列出、查看(包括私人信息)、编辑、创建和删除产品
  • 我遇到的问题是,网站使用AJAX调用API,而这些调用只有在网站用户经过身份验证的情况下才起作用。在没有身份验证cookie或API密钥的情况下调用API会因设计而失败

    以安全的方式将未经验证的网站标识到后端API以使其工作的建议方法是什么

    我的想法包括:

    • 网站的一个特殊API键,但它必须在Javascript代码中的某个地方对全世界可见,因此有人可以使用它来访问API本身并绕过我想要实现的任何速率限制

    • 我考虑在web控制器上的会话中设置一些东西,然后可以在API控制器中进行验证,但我遇到了一些问题,未经验证的API调用重定向到帐户控制器上的登录页面,然后设置相关会话变量,这意味着后续API调用无论是否经过合法身份验证都会成功。这似乎是最有希望的选择,但我对ASP.NETCore的工作原理还不够熟悉,无法使它变得健壮


    您应该使用Jason Web令牌身份验证,要在API中实现此身份验证,请查看以下链接:

    通过在WebApi的管道中使用JWT身份验证,您的问题将得到解决

    此外,您还可以使用ASP.NET核心标识系统来处理诸如可以在特定控制器方法上实现的角色之类的事情,例如,“编辑”只能用于角色管理员等

    亲切问候,, .js