我有一个ASP.NET MVC 5(.NET Framework 4.5.2,非核心)Web应用程序,使用默认的基于ASP.NET Identity Cookie的身份验证。用户可以登录Account/Login
并在浏览器中设置一个cookie。我可以使用Authorize
属性来保护动作,甚至可以指定哪些角色可以访问它。这是MVC 5模板中的所有标准内容。
现在,我需要添加一个带有一些Web Api 2控制器的API(继承ApiController
),并且我想使用JWT令牌,因为这既将由Web应用程序的用户通过浏览器请求调用,也可以从外部CLI工具。我想对Authorize
属性使用角色,就像在MVC控制器中一样。
因此,理想情况下,当请求ApiController操作时,Authorize属性将检查是否存在有效的cookie会话,如果存在且与角色匹配,则允许该用户。如果请求中没有cookie(来自非浏览器环境的http请求),它将检查JWT的存在。生成的JWT有效负载将包含用户所处的角色,因此中间件应该能够从中读取它们并验证访问权限。
我已经在Google上搜索了很多,但是几乎所有有关ASP.NET Core的指南。