如何给 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
将限制对单个页面的访问。因此,AllowAnonymousToFolder
和 AllowAnonymousToPage
做相反的事情。
关于上述的具体文档,截至今天,文档仍在完成中。但是,您可以在此处阅读并跟踪它的进度https://github.com/aspnet/Docs/issues/4281
我查看了当前的 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
将限制对单个页面的访问。因此,AllowAnonymousToFolder
和 AllowAnonymousToPage
做相反的事情。
关于上述的具体文档,截至今天,文档仍在完成中。但是,您可以在此处阅读并跟踪它的进度https://github.com/aspnet/Docs/issues/4281