我有一个WEB Api,它使用用户帐户进行注册等,还有令牌。
现在我希望使用Token(JWT承载)和Identity来保护所有端点。所以用户不能只有一个有效的令牌,但他也必须登录。
当我使用[Authorize(Policy = "Bearer")]
时,我获得了令牌授权,当我使用[Authorize]
时,我获得了身份授权,如何将两者结合使用?我想我可以做[授权(政策=“承载,身份”)](基于角色逻辑)但我得到的错误是政策不存在。
有没有办法实现这个?
答案 0 :(得分:2)
当我使用[授权(政策=" Bearer")]时,我获得了令牌授权,当我使用[授权]时,我获得了身份授权,我如何将两者结合起来? [原文如此]
设置ActiveAuthenticationSchemes
属性。它采用逗号分隔的方案名称列表。这是一个激活Identity使用的cookie中间件和承载(令牌)中间件的示例。
[Authorize(ActiveAuthenticationSchemes = "Bearer, Identity.Application")]
承载和cookie中间件都将运行并有机会为当前用户创建和附加身份。
说明:
您可以激活所需的任何身份验证方案。默认方案名称位于Identity
和Authentication
名称空间中。例如。
Microsoft.AspNetCore.Authentication.JwtBearer
.JwtBearerDefaults.AuthenticationScheme // "Bearer"
Microsoft.AspNetCore.Identity
.IdentityCookieOptions.ApplicationCookie // "Identity.Application"
...
另见: