Как перенаправить пользователей в представление после того, как они вошли в систему и попытались вернуться на экран входа в систему ASP NET CORE - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть контроллер аутентификации, который при успешном входе в систему перенаправляет пользователя на контроллер панели управления с заполненными свойствами user.identity, поэтому я могу использовать User.IsAuthenticated и User.IsInRole("Admin")

Мой вопрос.

После того, как пользователь вошел в систему и находится на странице панели инструментов. Как я могу перенаправить их обратно на страницу панели инструментов, если они уже вошли в систему.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Поэтому я решил просто проверить, прошла ли аутентификация пользователя на моем [HttpGet] контроллере входа, а не на [HttpPost] контроллере входа.

[HttpGet]
public ActionResult Login()
{
    if (User.Identity.IsAuthenticated)
        return RedirectToAction("Index", "Dashboard");

    return View();
}

[HttpPost]
public async Task<IActionResult> Login(LoginViewModel req)
{

    return View(req);
}
0 голосов
/ 12 апреля 2019

Реализовать аутентификацию. И сделайте Dashboard контроллером по умолчанию. Волшебство случится, из коробки.

In Startup.cs

public void ConfigureServices(IServiceCollection services)
{

...

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
         .AddCookie("user_by_cookie", options =>
         {
             options.LoginPath = "/Login/Index/";
         })
...


}



public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
 app.UseAuthentication();

 app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Dashboard}/{action=Index}/{id?}");
 });
...
}

Контроллер входа

    [Authorize(AuthenticationSchemes = "user_by_cookie")]
public class LoginController : Controller
{

    [HttpGet]
    [AllowAnonymous]
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    public IActionResult Index()
    {
        ...
        //authenticate();
        ...
        return View();
    }

    [HttpGet]
    public IActionResult Logout()
    {
        ..
        // logout();  -> 
        ..
        return RedirectToAction("Index");
    }

}

в панели управления контроллера

    [Authorize(AuthenticationSchemes = "user_by_cookie")]
public class DashboardController : Controller
{

    [HttpGet]
    public IActionResult Index()
    {
        return View();
    }

}
...