【问题标题】:How to add authorization to RazorPages?如何向 RazorPages 添加授权?
【发布时间】:2018-04-03 13:30:30
【问题描述】:
我查看了当前的 official Microsoft Docs,但找不到任何正确的内容来涵盖如何处理 RazorPages 的授权。
我发现您可以像这样将AuthorizeAttribute 添加到PageModel:
// using Microsoft.AspNetCore.Authorization
[Authorize]
public class IndexModel : PageModel
{
...
}
我不想对每一页都重复这个。有没有更好的办法?
【问题讨论】:
标签:
c#
asp.net-core
authorization
asp.net-core-mvc
razor-pages
【解决方案1】:
您可以在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