问题:
创建一个使用从 api 客户端传递的令牌保护的 WebApi。
某些 api 方法应仅对定义了特定角色的用户可用。
例如
场景如下所示:
Angular8 调用 WebApi 登录
httpClient.Post(new LogInRequest(userName, password));
WebAPI 登录用户并生成令牌
signInManager.PasswordSignInAsync(userName, password);
var token = GenerateToken(userName); // token should be generated internally
return token;
Angular8调用WebApi并在标头中包含令牌
httpClient.Post(header: "TOKEN", new CreateCompanyRequest(company));
现在,WebAPI 检查是否允许分配给令牌的用户执行此操作
[Authorize("Supervisor")] // only user with Supervisor role should be able to use this controller
public class CompanyController : Controller
上面的代码只是一个示例,我将如何看到它工作。到目前为止,我已经尝试阅读一些 JWT 持有者的解释,但这些文章中的大部分都来自旧版本的 asp.net。 如果您可以向我解释此身份验证应该如何工作,或者向我指出一些有关如何 asp.net 核心标识与 webapi 令牌身份验证相结合的文档
您可以参考以下链接,该链接向您介绍了在核心 Web API 中使用 asp.net 核心身份验证、JWT 令牌授权 asp.net 的完整示例:
https://fullstackmark.com/post/13/jwt-authentication-with-aspnet-core-2-web-api-angular-5-net-core-identity-and-facebook-login
您可以使用 3.0 包将其源代码调整为 asp.net 核心 3.0,它就可以工作了。