ASP.NET Core 2.0 - Razor - 授权

时间:2017-10-22 20:50:51

标签: c# razor asp.net-core asp.net-core-2.0

我正在尝试使用asp.net core 2 razor页面。如果有人试图访问某个页面并且他们没有登录或者没有正确的角色,我就不应该授予他们访问该页面的权限。

限制此人访问该网页的适当方法是什么?

我认为我会在页面的视图模型类中放置某种类型的属性,但这似乎不起作用。我试图在没有运气的情况下为各种方法和类添加属性。

1 个答案:

答案 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则会限制基于单个页面的访问权限。相应地,AllowAnonymousToFolderAllowAnonymousToPage正好相反。

有关上述的具体文档,截至今天,文档仍在完成中。但是,您可以阅读有关它的进度并在此处跟踪https://github.com/aspnet/Docs/issues/4281

否则,您可以更全面地阅读Authorization in ASP.NET Core on the official Microsoft Docs