URL-адрес входа в систему с идентификатором ядра ASP.NET

Я использую ASP.NET Core 2.1, и я использовал строительные леса, чтобы добавить Identity, который работает нормально. Кроме того, когда я пытаюсь перейти на страницу, требующую входа в систему, она меня принимает: /Identity/Account/Login?ReturnUrl

Как изменить его, чтобы перейти к простому /Account/Login, который является моей собственной страницей регистрации, которую я создал.

Я попробовал это:

services.ConfigureApplicationCookie(options =>
                {
                    options.AccessDeniedPath = "/Account/AccessDenied";
                    options.Cookie.Name = "Cookie";
                    options.Cookie.HttpOnly = true;
                    options.ExpireTimeSpan = TimeSpan.FromMinutes(720);
                    options.LoginPath = "/Account/Login";
                    options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
                    options.SlidingExpiration = true;
                });

но он по-прежнему относится к /Identity/

Ответы

Ответ 1

Проверьте, как вы регистрируете службу удостоверения, если у вас есть:

services.AddDefaultIdentity<IdentityUser>(options => { }).AddEntityFrameworkStores<ApplicationDbContext>();

замените его

services.AddIdentity<IdentityUser, IdentityRole>(options => { }).AddEntityFrameworkStores<ApplicationDbContext>(); и сохраните свой код в ConfigureApplicationCookie который работал в моем случае.

Ответ 2

Я просто столкнулся с этой проблемой. Я решил это, переместив

services.ConfigureApplicationCookie вызывать после моих services.AddIdentity call в ConfigureServices

Ответ 3

Попробуйте добавить new PathString("...") и установить маршрут в контроллере.

services.ConfigureApplicationCookie(options =>
{
    options.AccessDeniedPath = new PathString("/Account/AccessDenied");
    options.Cookie.Name = "Cookie";
    options.Cookie.HttpOnly = true;
    options.ExpireTimeSpan = TimeSpan.FromMinutes(720);
    options.LoginPath = new PathString("/Account/Login");
    options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
    options.SlidingExpiration = true;
});

[AllowAnonymous]
[Route("Account")]
public class SecurityController : Controller
{
    [Route("Login/{returnUrl?}")]
    public IActionResult Login(string returnUrl = null)
    {
        ViewData["ReturnUrl"] = returnUrl;

        return View();
    }
}

Ответ 4

Переместить services.ConfigureApplicationCookie после services.AddIdentity и, самое главное, удалить AddDefaultUI в службах. Ссылка здесь

Ответ 5

 services.ConfigureApplicationCookie(options =>
            {
                options.Events = new CookieAuthenticationEvents
                {
                    OnRedirectToLogin = x =>
                    {
                        x.Response.Redirect("Account/Login");
                        return Task.CompletedTask;
                    }
                };

            });