【问题标题】:How to allow authorization scheme in specfic areas如何在特定区域允许授权方案
【发布时间】:2021-03-20 17:01:19
【问题描述】:

我默认使用 cookie 身份验证方案。 我有一个特定的区域,我想在其中允许额外的身份验证方案,否则,所有现有的策略都应该保持不变。

我已尝试将 AuthoriztionFilter 添加到 IPageHandlerModelConvention/IControllerModelConvention:

public class AreaFiltersConvention : IPageHandlerModelConvention
{
    public string[] Areas { get; set; }


    public void Apply(PageHandlerModel model)
    {
        if (this.Areas.Contains(model.Page.AreaName))
        {
            model.Page.Filters.Add(new AuthorizeFilter("AllowBasicAuthPolicy"));
        }
    }

我有两个问题:

  1. PageHandlerModel.Page 为空,所以无法添加 AuthorizeFilter。

  2. 据我所知,我只能在需要特定策略时使用它。我在 OR 条件下苦苦挣扎。

     services.AddAuthorization(options =>
     {
          options.AddPolicy("AllowBasicAuthPolicy", policy =>
          {
               policy.AddAuthenticationSchemes("Basic"); // this breaks existing policies
               policy.RequireAuthenticatedUser();
          });
     });
    

【问题讨论】:

    标签: c# asp.net-core authorization .net-5


    【解决方案1】:

    您可以在剃须刀页面中使用内置的AuthorizeAreaPage 约定,如下所示:

    services.AddRazorPages(options =>
    {
        options.Conventions.AuthorizeAreaPage("AreaName", "/PageName", "AllowBasicAuthPolicy");
    });
    

    参考:

    https://docs.microsoft.com/en-us/aspnet/core/security/authorization/razor-pages-authorization?view=aspnetcore-5.0#require-authorization-to-access-an-area-page

    【讨论】:

      猜你喜欢
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 2021-05-02
      • 2018-02-22
      • 2019-01-28
      • 2021-01-12
      相关资源
      最近更新 更多