ASP.NET Core提供了两种身份验证的解决方案,即AuthorizationPolicy(授权策略)和AuthorizationFilter(授权过滤器)。
AuthorizationPolicy是一种基于声明的权限控制解决方案,可以通过声明配置策略来限制用户访问。下面是一个示例:
在Startup.cs中配置授权策略:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("Admin"));
});
在Controller或Action中使用授权策略:
[Authorize(Policy = "RequireAdminRole")]
public IActionResult AdminPanel()
{
return View();
}
AuthorizationFilter则是一种基于代码的权限控制解决方案。可以自定义授权过滤器,从而实现自定义的权限控制。下面是一个示例:
public class CustomAuthorizationFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
if (!context.HttpContext.User.Identity.IsAuthenticated)
{
context.Result = new UnauthorizedResult();
return;
}
if (!context.HttpContext.User.IsInRole("Admin"))
{
context.Result = new ForbidResult();
return;
}
}
}
在Controller或Action中使用授权过滤器:
[CustomAuthorizationFilter]
public IActionResult AdminPanel()
{
return View();
}