ASP.NET Core 2 - Как удалить строительные леса?
ASP.NET Core 2.x включает в себя некоторые готовые маршруты, такие как страница входа, настройки и т. Д. Я работаю над тем, что имеет только кнопки входа OAuth и никаких настроек. Это означает, что я не хочу, чтобы пользователи могли регистрироваться по электронной почте, и мне не нужны страницы настроек.
Я могу удалить ссылку на такие вещи, как страница "Настройки", однако маршруты все еще существуют, и к ним можно получить доступ, введя их. Как отключить эти маршруты, чтобы они были полностью недоступны?
В основном все под /Identity/Account/*
Маршрут, кроме страницы входа, не должен быть доступен.
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);
То, на что вы ссылаетесь - это интерфейс пользователя по умолчанию. Включается всякий раз, когда вы регистрируете services.AddDefaultIdentity
или явно позвонить AddDefaultUI
при регистрации через другой IServiceCollection
расширения (AddIdentity
/AddIdentityCore
). Вы не можете выбрать или выбрать то, что будет или не будет включено в пользовательский интерфейс по умолчанию, поэтому, если вы не хотите его часть, то вы не можете использовать его вообще. Поэтому измените services.AddDefaultIdentity
линия к services.AddIdentity
вместо.
После этого вы можете использовать каркас Identity для включения определенных частей пользовательского интерфейса по умолчанию в ваше приложение. Щелкните правой кнопкой мыши по вашему проекту и выберите Add
> New Scaffolded Item...
, Затем выберите Identity
слева и OK
использовать единственный доступный каркас идентификации. В появившемся окне вы можете проверить страницы, которые вы хотите включить, а затем нажать OK
снова.