【问题标题】:ASP.NET Core 2.0 - Razor - AuthorizeASP.NET Core 2.0 - Razor - 授权
【发布时间】:2018-04-03 09:25:17
【问题描述】:

我正在试用 asp.net core 2 razor 页面。如果有人试图访问一个页面并且他们没有登录或处于正确的角色,我不应该让他们访问该页面。

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

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

【问题讨论】:

  • 没关系。我一定是做错了什么。我将 Authorize 属性应用于 pagemodel 类,现在它的行为似乎与我预期的一样。我想我以前做过一些愚蠢的事情。
  • Authorize 属性应该用于控制器或控制器的方法。还是您的意思是“剃刀页面”?
  • 我正在尝试使用 Asp.NET Core 2 Razor 页面。我以为我已经解决了这个问题,但我错了。这是一个奇怪的问题。

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


【解决方案1】:

要使用授权属性,您可以用AuthorizeAttribute 装饰PageModel

例如:

// 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 进行更一般的阅读。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2018-06-02
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2018-03-30
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多