授权Razor Pages中的Tag Helper作为页面处理程序方法

时间:2018-10-18 11:56:45

标签: c# asp.net claims-based-identity razor-pages

我有一个Razor Pages应用程序,在这里我使用基于声明的授权。在我的代码内部,我使用[Authorize]标记来标识用户可以访问的方法。对于我的班级来说,它工作得很好,但是对于我的单个页面处理程序却不起作用。

经过一些研究,似乎页面处理程序不支持它。有人知道解决方法吗?

我的代码如下所示:

[Authorize(Policy = "ListItems")]
public class LicensesModel : PageModel
{ 
    // Only user with the "ListItems" Claim can open this page
    public void OnGet()
    {
         ...
    }

    [Authorize(Policy = "DownloadItem")]
    public IActionResult OnPostDownload(string id)
    {
         // This method can always be accessed, but shouldn't
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

这看起来像是自定义全局过滤器的候选者:https://www.learnrazorpages.com/razor-pages/filters

您将创建一个在选择处理程序后执行的程序,然后使用context.HandlerMethod.MethodInfo.Name获取所选处理程序方法的名称。然后,您可以基于此进行授权检查。