ASP.NET Core 2 - Как удалить строительные леса? - PullRequest
0 голосов
/ 17 января 2019

ASP.NET Core 2.x включает некоторые готовые маршруты, такие как страница входа, настройки и т. Д. Я работаю над тем, что имеет только кнопки входа OAuth и никаких настроек.Это означает, что я не хочу, чтобы пользователи могли регистрироваться по электронной почте, и мне не нужны никакие страницы настроек.

Я могу удалить ссылку на такие вещи, как страница настроек, однако маршруты по-прежнемусуществуют и могут быть доступны путем ввода их. Как мне отключить эти маршруты, чтобы они были полностью недоступны?

В основном все, что находится под маршрутом /Identity/Account/*, за исключением страницы входа, не должнобыть доступным.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Для отключения определенного маршрута для 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);
0 голосов
/ 17 января 2019

То, на что вы ссылаетесь - это интерфейс пользователя по умолчанию. Он включается всякий раз, когда вы регистрируете Identity с помощью services.AddDefaultIdentity или явно вызываете AddDefaultUI при регистрации с помощью других расширений IServiceCollection (AddIdentity / AddIdentityCore). Вы не можете выбрать или выбрать то, что будет или не будет включено в пользовательский интерфейс по умолчанию, поэтому, если вы не хотите его часть, то вы не можете использовать его вообще. Поэтому измените строку services.AddDefaultIdentity на services.AddIdentity.

Когда это будет завершено, вы можете использовать платформу Identity для включения определенных частей пользовательского интерфейса по умолчанию в ваше приложение. Щелкните правой кнопкой мыши по вашему проекту и выберите Add> New Scaffolded Item.... Затем выберите Identity слева и OK, чтобы использовать единственный доступный каркас идентификации. В появившемся окне вы можете проверить страницы, которые вы хотите включить, а затем снова нажать OK.

...