如何给 RazorPages 添加授权?

How to add authorization to RazorPages?

我查看了当前的 official Microsoft Docs,但无法找到任何关于如何处理 RazorPages 授权的正确内容。

我发现您可以像这样将 AuthorizeAttribute 添加到 PageModel

// using Microsoft.AspNetCore.Authorization

[Authorize]
public class IndexModel : PageModel
{
    ...
}

我不想在每一页都重复这个。有没有更好的方法?

可以在ConfigureServices方式下配置权限。这是一个例子:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizeFolder("/MembersOnly");
        options.Conventions.AuthorizePage("/Account/Logout");

        options.Conventions.AuthorizeFolder("/Pages/Admin", "Admins"); // with policy
        options.Conventions.AllowAnonymousToPage("/Pages/Admin/Login"); // excluded page

        options.Conventions.AllowAnonymousToFolder("/Public"); // just for completeness
    });

上面的例子是从provided in the official repository.

的例子扩展而来的

AuthrorizeFolder 将限制对整个文件夹的访问,而 AuthorizePage 将限制对单个页面的访问。因此,AllowAnonymousToFolderAllowAnonymousToPage 做相反的事情。

关于上述的具体文档,截至今天,文档仍在完成中。但是,您可以在此处阅读并跟踪它的进度https://github.com/aspnet/Docs/issues/4281