ASP.NET Core 2.0 - Razor - 授权验证

3
我正在尝试使用asp.net core 2 razor pages。如果有人未登录或角色不正确,尝试访问页面时,我应该禁止他们访问该页面。
限制用户访问页面的适当方法是什么?
我认为我会在页面的视图模型类中放置某种属性,但这似乎行不通。我已经尝试在各种方法和类中添加属性,但没有成功。

{btsdaf} - Wallace B. McClure
{btsdaf} - Crowcoder
我正在尝试使用Asp.NET Core 2 Razor Pages编程。本以为已经解决了这个问题,但是我错了。这个问题很奇怪。 - Wallace B. McClure
1个回答

8
要使用 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则相反。
关于上述内容的具体文档,截至今天,文档仍在编写中。但是,您可以在此处阅读有关其进展并跟踪它的信息。
否则,您可以在Microsoft官方文档中了解ASP.NET Core授权的更一般内容

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接