我有一个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
}
}
谢谢!
答案 0 :(得分:1)
这看起来像是自定义全局过滤器的候选者:https://www.learnrazorpages.com/razor-pages/filters。
您将创建一个在选择处理程序后执行的程序,然后使用context.HandlerMethod.MethodInfo.Name
获取所选处理程序方法的名称。然后,您可以基于此进行授权检查。