【问题标题】:Disable access to all Identity pages in .NET Core 3.1 MVC禁止访问 .NET Core 3.1 MVC 中的所有身份页面
【发布时间】:2020-09-16 17:20:52
【问题描述】:

是否有一种干净的方法可以完全阻止访问安装 .NET Identity 时创建的 /Areas/Identity/ 文件夹中的所有页面?我希望在startup.cs 能做点什么。

我尝试创建一个继承自 ActionFilter 的过滤器:

public class PreventAccessToIdentityFolderFilter : IActionFilter
{

    public void OnActionExecuting(ActionExecutingContext context)
    {
        var request = context.HttpContext.Request;

        if (request.Path.HasValue && request.Path.Value.ToLower().StartsWith("/identity"))
        {
            context.HttpContext.Response.Redirect("/");
        }
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        //throw new NotImplementedException();
    }
}

然后在 MVC 和 Razor Pages 中注册它(因为新的 Identity UI 使用 Razor Pages):

services.AddRazorPages()
    .AddMvcOptions(o => {
        o.Filters.Add(new PreventAccessToIdentityFolderFilter());
    });

var mvcBuilder = services.AddControllersWithViews(o => {

    var policy = new Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();

    o.Filters.Add(new Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter(policy));

    o.Filters.Add(new PreventAccessToIdentityFolderFilter());
});

过滤器对所有 MVC 操作运行,但不对任何 Identity Razor 页面运行。

必须有一种简单的方法来完全禁用对/Identity 区域/剃刀页面的访问?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-identity


    【解决方案1】:

    需要 2 个动作:

    1. 通过 Visual Studio 删除文件夹 Areas 以及其中的所有内容。

    2. 删除 NuGet 包Microsoft.AspNetCore.Identity.UI

    【讨论】:

      【解决方案2】:

      如果您希望某些用户访问这些页面,您可以根据授权策略阻止路径。

          services.AddRazorPages(options => {
              options.Conventions.AuthorizeFolder("/Path", "policy name");
          });
          services.AddAuthorization(options => {
              options.AddPolicy("policy name", policy => ... );
          });
      

      【讨论】:

        猜你喜欢
        • 2021-02-11
        • 2015-01-25
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 2020-09-06
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        相关资源
        最近更新 更多