如何在用户登录并尝试返回登录屏幕后将用户重定向到视图 ASP 网络核心



我有我的身份验证控制器,成功登录后会将用户重定向到我的仪表板控制器,并填充了user.identity属性,因此我可以使用User.IsAuthenticatedUser.IsInRole("Admin")

我的问题是。

用户登录并进入仪表板页面后。如果他们已登录,如何将他们重定向回仪表板页面。

提前谢谢。

所以我

的解决方案是简单地检查用户是否已经在我的[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);
}

实现身份验证。并使仪表板默认控制器。魔术会发生,开箱即用。

在创业中.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();
    }
}

相关内容

  • 没有找到相关文章

最新更新