我查看了当前的official Microsoft Docs,但无法找到正确处理如何处理RazorPages授权的内容。
我发现您可以将AuthorizeAttribute
添加到PageModel
,如下所示:
// using Microsoft.AspNetCore.Authorization
[Authorize]
public class IndexModel : PageModel
{
...
}
我不想为每一页重复这一点。还有更好的方法吗?
答案 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
则会限制基于单个页面的访问权限。相应地,AllowAnonymousToFolder
和AllowAnonymousToPage
正好相反。
有关上述的具体文档,截至今天,文档仍在完成中。但是,您可以阅读有关它的进度并在此处跟踪https://github.com/aspnet/Docs/issues/4281