如何在asp.net核心RazorPages中实现处理程序级别授权

问题描述 投票:0回答:1

PageModel的Authorize属性是不够的,因为它适用于该PageModel中的所有处理程序。我正在寻找一些自定义授权,说“只有18岁以上才能访问”,那么如何在RazorPages(不是MVC)中实现相同的权限?是否有任何简洁明了的解决方案?

asp.net-core authorization razor-pages
1个回答
0
投票

当前无法在单个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所示。

© www.soinside.com 2019 - 2024. All rights reserved.