如何使用 ASP.NET Core Authorization 来实现身份验证和授权
时间: 2023-07-14 14:13:55 浏览: 244
ASP.NET Core Authorization是一个集成在ASP.NET Core中的授权框架,可以用来实现身份验证和授权。下面介绍如何使用ASP.NET Core Authorization来实现身份验证和授权。
1. 配置身份验证
在Startup.cs文件中的ConfigureServices方法中添加以下代码来配置身份验证:
```
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
```
这段代码使用JWT来进行身份验证,需要提供一个密钥作为签名,可以在appsettings.json中配置。
2. 在控制器中添加授权
在需要授权的控制器或方法上添加Authorize特性来限制访问:
```
[Authorize(Roles = "admin")]
public class AdminController : Controller
{
// ...
}
```
这段代码限制只有拥有admin角色的用户才能访问AdminController。
3. 配置授权策略
通过配置授权策略,可以更细粒度地控制访问权限。在Startup.cs文件的ConfigureServices方法中添加以下代码:
```
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("admin"));
});
```
这段代码配置了一个名为RequireAdminRole的策略,要求用户必须拥有admin角色才能访问。
在控制器或方法上使用Authorize特性指定授权策略:
```
[Authorize(Policy = "RequireAdminRole")]
public class AdminController : Controller
{
// ...
}
```
这段代码限制只有拥有admin角色的用户才能访问AdminController。
以上就是使用ASP.NET Core Authorization来实现身份验证和授权的基本步骤。
阅读全文