如何在 asp.net 核心 RazorPages 中实现 Handler 级授权
How to implement Handler level authorization in asp.net core RazorPages
PageModel 的 Authorize 属性不够,因为它适用于该页面模型中的所有处理程序。
我正在寻找一些自定义授权让我们说 "Can access only if age is 18+",那么如何在 RazorPages(不是 MVC)中实现相同的授权?
有什么简洁明了的解决方案吗??
目前无法在单个 Razor 页面处理程序上使用 Authorize
属性,您可以在 here 中跟踪功能请求。
作为解决方法,您可以注入 IAuthorizationService
并手动实施授权:
private readonly IAuthorizationService _authorizationService;
public IndexModel(ILogger<PrivacyModel> logger, IAuthorizationService authorizationService)
{
_logger = logger;
_authorizationService = authorizationService;
}
public async Task OnGet()
{
var isAuthorized = await _authorizationService.AuthorizeAsync(
User, "PolicyName");
if (!isAuthorized.Succeeded)
{
//not pass the authorzation
}
}
并创建策略来检查价值用户的年龄声明是否超过 18 岁,如图所示 here。
PageModel 的 Authorize 属性不够,因为它适用于该页面模型中的所有处理程序。 我正在寻找一些自定义授权让我们说 "Can access only if age is 18+",那么如何在 RazorPages(不是 MVC)中实现相同的授权? 有什么简洁明了的解决方案吗??
目前无法在单个 Razor 页面处理程序上使用 Authorize
属性,您可以在 here 中跟踪功能请求。
作为解决方法,您可以注入 IAuthorizationService
并手动实施授权:
private readonly IAuthorizationService _authorizationService;
public IndexModel(ILogger<PrivacyModel> logger, IAuthorizationService authorizationService)
{
_logger = logger;
_authorizationService = authorizationService;
}
public async Task OnGet()
{
var isAuthorized = await _authorizationService.AuthorizeAsync(
User, "PolicyName");
if (!isAuthorized.Succeeded)
{
//not pass the authorzation
}
}
并创建策略来检查价值用户的年龄声明是否超过 18 岁,如图所示 here。