我正在尝试使用asp.net core 2 razor页面。如果有人试图访问某个页面并且他们没有登录或者没有正确的角色,我就不应该授予他们访问该页面的权限。
限制此人访问该网页的适当方法是什么?
我认为我会在页面的视图模型类中放置某种类型的属性,但这似乎不起作用。我试图在没有运气的情况下为各种方法和类添加属性。
答案 0 :(得分:6)
要使用authorize属性,您可以使用PageModel
修饰AuthorizeAttribute
。
例如:
// 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
});
AuthorizeFolder
将限制对整个文件夹的访问,而AuthorizePage
则会限制基于单个页面的访问权限。相应地,AllowAnonymousToFolder
和AllowAnonymousToPage
正好相反。
有关上述的具体文档,截至今天,文档仍在完成中。但是,您可以阅读有关它的进度并在此处跟踪https://github.com/aspnet/Docs/issues/4281
否则,您可以更全面地阅读Authorization in ASP.NET Core on the official Microsoft Docs。