Asp.net mvc 如何在用户登录后重定向他/她刚从何处来?

Asp.net mvc 如何在用户登录后重定向他/她刚从何处来?,asp.net-mvc,identity,Asp.net Mvc,Identity,我正在构建一个电子商店web应用程序。作为一个过程,将有一些操作需要用户首先进行身份验证,然后才能执行进一步的步骤。默认情况下,在ASP.Net identity中,当用户登录时,他/她将被重定向到主控制器的索引操作,这不是我想要的。我想重定向用户的来源。有什么想法吗? 这是我的控制器: [AllowAnonymous] public ActionResult Login(string returnUrl) { ViewBag.Return

我正在构建一个电子商店web应用程序。作为一个过程,将有一些操作需要用户首先进行身份验证,然后才能执行进一步的步骤。默认情况下,在ASP.Net identity中,当用户登录时,他/她将被重定向到主控制器的索引操作,这不是我想要的。我想重定向用户的来源。有什么想法吗? 这是我的控制器:

[AllowAnonymous]
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        }

        //
        // POST: /Account/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
            }
        }
[AllowAnonymous]
公共操作结果登录(字符串返回URL)
{
ViewBag.ReturnUrl=返回URL;
返回视图();
}
//
//POST:/帐户/登录
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
返回重定向到本地(returnUrl);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证:
return RedirectToAction(“SendCode”,new{ReturnUrl=ReturnUrl,RememberMe=model.RememberMe});
案例信号状态故障:
违约:
AddModelError(“,”登录尝试无效“);
返回视图(模型);
}
}
我正在使用ASP.NETMVC5标识

默认情况下,在ASP.Net identity中,当用户登录时,他/她将 已重定向到主控制器的索引操作,该操作不可用 我想要什么。我想重定向用户的来源 从

这一假设并不完全正确。请求的行为实际上是默认行为

如果查看登录操作(HTTPGET),您会注意到它有一个
returnUrl
参数。当401未经授权的状态代码更改为302重定向到登录路径时,OWIN中间件将填充该代码
returnUrl
vallue被分配给
ViewBag.returnUrl
,该值稍后用于附加此值Login postback URL(Login.cshtml视图):

在登录(HTTPPOST)操作中,您可以注意到相同的returnUrl参数,该参数用于在登录成功时将用户重定向到此url:

  case SignInStatus.Success:
      return RedirectToLocal(returnUrl);

例如,如果您将Authorize属性放在Home controller中的About action上,并通过在浏览器中键入
http://localhost:.../Home/About
(将…替换为端口号)您将被重定向到登录操作,成功登录后,您将被重定向到最初请求的主页/关于操作

您是否尝试使用SO的搜索功能?如果是的话,它会给你这个。非常感谢你的帮助。救了我一天:)
  case SignInStatus.Success:
      return RedirectToLocal(returnUrl);