如何在 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