我已经实现了idel超时功能。这里当用户想要1分钟时,我们将用户重定向到登录页面。我们保留了自动注销发生时用户所在网址的跟踪。例如,用户正在重置密码视图,如果发生自动注销,我得到的网址如下
http://localhost/XYZ.Portal/?returnUrl=%2FXYZ.Portal%2FUser%2FResetPassword
通过使用以下代码
实现上述URL'@Url.Action("Login", "User", new { returnUrl = HttpContext.Current.Request.RawUrl })'
现在当用户重定向到登录页面时再次登录时,我使用以下代码将其重定向回来,但代码似乎无法正常工作。我做错了什么。?
[HttpPost]
public ActionResult Login(FormCollection formCollection)
{
if (ModelState.IsValid)
{
UserBE user = new UserBE();
user.Email = formCollection["Email"];
user.Password = formCollection["Password"];
user = UserBL.AuthenticateUser(user);
if (user.AuthenticUser)
{
if (Request.QueryString["returnUrl"] != null)
{
string returnUrl = Server.UrlDecode(Request.QueryString["returnUrl"]);
Redirect(returnUrl );
}
else
{
Session["Email"] = user.Email;
return RedirectToAction("DashBoard");
}
}
else
return View(user);
}
return View();
}
[HttpGet]
登录操作方法:
[HttpGet]
public ActionResult Login()
{
return View();
}
returnUrl I get as XYZ.Portal/User/ResetPassword
提前致谢。
答案 0 :(得分:0)
您需要返回 RedirectResult
:
if (Request.QueryString["returnUrl"] != null)
{
string returnUrl = Server.UrlDecode(Request.QueryString["returnUrl"]);
return Redirect(returnUrl);
}
答案 1 :(得分:0)
不工作。现在我的URL变为localhost / XYZ.Portal
在这种情况下,您可以执行以下两个选项之一:
1)写:
string startReturnUrl = "http://www." + your returnUrl
或
2)将你的returnUrl拆分为:
string viewName = returnUrl.Split('/').Last();
但我认为最好将returnUrl更改为仅需要的视图名称