2016-08-02 37 views

回答

0

使用表单身份验证,当您访问需要身份验证的页面时,ASP.NET会将您重定向到登录页面,并将ReturnUrl作为参数传入。

所以,你需要做的就是使用该参数将用户返回到之前的位置。

public ActionResult Login(string username, string pass, string returnUrl) 
{ 
    // code to authenticate user here... 

    if (!string.IsNullOrEmpty(returnUrl)) 
    return Redirect(returnUrl); 

    return RedirectToAction("Index", "Home"); 
} 

您可能还需要考虑使用FormsAuthentication.RedirectFromLoginPage

Redirects an authenticated user back to the originally requested URL or the default URL. 

https://msdn.microsoft.com/en-us/library/ka5ffkce(v=vs.110).aspx

注意调用这个方法也将发布身份验证cookie,你可能已经在做。所以你必须检查你没有这样做两次。

编辑:见https://stackoverflow.com/a/1206728/722778

也许你正在生成您的形式指定控制器的动作(例如Html.BeginForm(“登录”,“帐户”)

在这种情况下,尝试仅此?在你看来:

Html.BeginForm() 

或者传递RETURNURL参数yourselve:

Html.BeginForm("LogOn", "Account", new {ReturnUrl = Request.QueryString["ReturnUrl"] }) 
+0

问题是登录功能在重定向时从不接收returnUrl,我无法弄清楚如何确保它通过。 –

+0

请看我最后的编辑 – hernant