代码之家  ›  专栏  ›  技术社区  ›  Chris Barr

ASP.NET Core 2-如何删除脚手架路径?

  •  1
  • Chris Barr  · 技术社区  · 5 年前

    NET Core 2.x包括一些预先制作的框架路由,如登录页面、设置等。我正在研究的东西只有OAuth登录按钮,没有设置。这意味着我不希望用户能够通过电子邮件注册,也不希望有任何设置页面。

    使残废 这些路线完全无法到达?

    /Identity/Account/* 路由,除了登录页不应可用。

    2 回复  |  直到 5 年前
        1
  •  2
  •   Chris Pratt    5 年前

    您所指的是默认的标识UI。当你注册身份的时候 services.AddDefaultIdentity 或显式调用 AddDefaultUI 通过另一个注册时 IServiceCollection 扩展( AddIdentity / AddIdentityCore ). 您不能选择将要或不将要包含在默认用户界面中的内容,因此,如果您不想要其中的一部分,则根本无法使用它。因此,更改 行至 services.AddIdentity 相反。

    完成后,可以使用标识脚手架在应用程序中包含默认UI的某些部分。右键单击项目并选择 Add > New Scaffolded Item... . 然后选择 Identity OK 使用唯一可用的标识脚手架。在生成的窗口中,可以检查要包含的页面,然后单击 好 啊 再一次。

        2
  •  2
  •   Edward    5 年前

    用于禁用的特定路由 Razor Page IAsyncPageFilter .

    public class DisableIdentityAsyncPageFilter : IAsyncPageFilter
    {
        public DisableIdentityAsyncPageFilter()
        {
        }
    
        public async Task OnPageHandlerSelectionAsync(
                                            PageHandlerSelectedContext context)
        {
    
            await Task.CompletedTask;
        }
    
        public async Task OnPageHandlerExecutionAsync(
                                            PageHandlerExecutingContext context,
                                            PageHandlerExecutionDelegate next)
        {
            if (context.HttpContext.Request.Path.StartsWithSegments("/Identity") &&
                !context.HttpContext.Request.Path.StartsWithSegments("/Identity/Account/Login"))
            {
                context.Result = new StatusCodeResult(404);
            }
            else
            {
                await next.Invoke();
            }
        }
    }
    

    然后在中配置 Startup.cs

    services.AddMvc(options => {
        options.Filters.Add(typeof(DisableIdentityAsyncPageFilter));
    }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);