【问题标题】:ASP.NET Core 2 - How to remove scaffolded routes?ASP.NET Core 2 - 如何删除脚手架路由?
【发布时间】:2019-01-18 14:15:56
【问题描述】:

ASP.NET Core 2.x 包含一些预制的脚手架路由,例如登录页面、设置等。我正在处理一些只有 OAuth 登录按钮而没有设置的东西。这意味着我不希望用户能够通过电子邮件注册,并且我不希望任何设置页面。

我可以删除指向“设置”页面之类的链接,但是这些路由仍然存在,并且可以通过输入它们来访问。我如何禁用这些路由以使它们完全无法访问?

基本上/Identity/Account/* 路由下的所有东西,除了登录页面都应该不可用。

【问题讨论】:

标签: asp.net-core asp.net-mvc-scaffolding


【解决方案1】:

您指的是默认身份用户界面。每当您使用 services.AddDefaultIdentity 注册 Identity 或通过其他 IServiceCollection 扩展 (AddIdentity/AddIdentityCore) 注册时显式调用 AddDefaultUI 时,都会包含它。您无法选择将或不包含在默认 UI 中的内容,因此如果您不想要其中的一部分,则根本无法使用它。因此,请将services.AddDefaultIdentity 行改为services.AddIdentity

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

【讨论】:

  • 所以如果我想禁止使用电子邮件注册,最好的办法是添加相关的脚手架项目,然后将该页面设为空白或重定向到其他地方?
【解决方案2】:

要禁用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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多