Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在asp.net core RazorPages中实现处理程序级授权_Asp.net Core_Authorization_Razor Pages - Fatal编程技术网

Asp.net core 如何在asp.net core RazorPages中实现处理程序级授权

Asp.net core 如何在asp.net core RazorPages中实现处理程序级授权,asp.net-core,authorization,razor-pages,Asp.net Core,Authorization,Razor Pages,PageModel的Authorize属性不够,因为它适用于该PageModel中的所有处理程序。 我正在寻找一些自定义授权,比如“只有在18岁以上时才能访问”,那么如何在RazorPages(而不是MVC)中实现相同的授权呢? 是否有任何简洁明了的解决方案???目前无法在单个Razor页面处理程序上使用Authorize属性,您可以在中跟踪功能请求 作为一种解决方法,您可以注入IAuthorizationService并手动实现授权: private readonly IAuthorizati

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

目前无法在单个Razor页面处理程序上使用
Authorize
属性,您可以在中跟踪功能请求

作为一种解决方法,您可以注入
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 
    }

}
private readonly iaauthorizationservice\u authorizationService;
公共索引模型(ILogger记录器、IAuthorizationService授权服务)
{
_记录器=记录器;
_授权服务=授权服务;
}
公共异步任务OnGet()
{
var isAuthorized=await\u authorizationService.authorizationAsync(
用户,“保单名称”);
如果(!isAuthorized.Successed)
{
//未通过授权
}
}

并创建策略以检查值用户的年龄声明是否超过18岁,如图所示。

我有一个按钮或处理程序,用户只有在18岁时才能访问该按钮或处理程序+