Измените URL успешного входа в систему вместо / Home / Index в .NET core

#asp.net #asp.net-core #.net-core #asp.net-core-mvc #asp.net-identity

#asp.net #asp.net-core #.net-core #asp.net-core-mvc #asp.net-identity

Вопрос:

Я разработал проект .NET core 2.2 с использованием Individual (идентификация личности). После успешного входа из /Identity / Account /Login приложение перенаправляется в / Home / Index

Но я хочу, чтобы после успешного входа страница перенаправлялась на / Dashboard / Index , другое представление в моем проекте. Как я должен это реализовать?

Ответ №1:

Вам нужно создать каркас на Login странице (если вы еще этого не сделали) и изменить его в коде позади. Однако это только значение по умолчанию, если не указан returnUrl. Обычно пользователю будет предложено войти в систему, потому что он попытался перейти в какую-либо область, требующую авторизации, например, /Dashboard/Index в вашем сценарии. Если они перейдут по /Dashboard/Index и будут перенаправлены на страницу входа для аутентификации, то они будут перенаправлены обратно на /Dashboard/Index , как только они войдут в систему.

Комментарии:

1. Я получил решение использовать атрибут [Authorize] перед методом контроллера, который работает с returnUrl. В любом случае спасибо 🙂

2. Я бы немного углубился в ответ Криса П. Это будет работать практически с любой страницей, которая перенаправляет пользователя для входа в систему. Зачем писать все эти инструкции атрибутов в вашем коде, когда вам на самом деле это не нужно?

Ответ №2:

В .NET Core 5 Что я сделал, так это то, что я создал каркасную идентификацию и проверил переопределенные страницы входа / регистрации. Это создает файл класса, в котором вы можете обновить свой код следующим образом.

Сгенерированное местоположение файла : AreasIdentityPagesAccountLogin.cshtml.cs

  public async Task<IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/Dashboard/Index"); // Change the default login redirect url to Dashboard/Index

            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();