如何向RazorPages添加授权?

时间:2017-10-23 04:22:19

标签: c# asp.net-core authorization asp.net-core-mvc razor-pages

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

我发现您可以将AuthorizeAttribute添加到PageModel,如下所示:

// using Microsoft.AspNetCore.Authorization

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

我不想为每一页重复这一点。还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用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