ASP.NET Core 2.0 - Razor - 授权

Wal*_*ure 2 c# razor asp.net-core asp.net-core-2.0

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

限制用户访问页面的适当方法是什么?

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

Sve*_*vek 7

要使用authorize属性,您可以PageModel使用AuthorizeAttribute.

例如:

// using Microsoft.AspNetCore.Authorization

[Authorize]
public class IndexModel : PageModel
{
    ...
} 
Run Code Online (Sandbox Code Playgroud)

或者,您也可以在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
    });
Run Code Online (Sandbox Code Playgroud)

AuthorizeFolder会限制访问整个文件夹,而AuthorizePage会根据个人页面上会限制访问.的AllowAnonymousToFolderAllowAnonymousToPage做相反,相应.

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

否则,您可以在官方Microsoft Docs上更详细地阅读ASP.NET Core中的授权.