首页 新闻 赞助 找找看

asp.net mvc3 登录的ReturnUrl问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2011-05-07 12:10
我的登录代码如下:

//
// POST: /Account/LogOn
// 提交登录信息
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
UserModel um
= AccountMembershipService.ValidateUser(model.UserName, model.Password);
if (um != null)
{
AddCookie(um.UserID, um.Name, um.Roles, model.RememberMe);
Session[
"UserInfo"] = um;
if (um.Roles == "User")
{
// 如果为系统用户,同步登录到UCenter
ucClient.UC_User_Synlogin(um.UCenterID);
}
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError(
"", "您尝试的登录不成功!");
return View(model);
}
}
else
{
return View(model);
}
}
当未经验证的用户登录时,URL为:/Account/LogOn?ReturnUrl=%2ffixcom%2fadmin,当时登录成功后不能
返回ReturnUrl的路径,总是返回到主页(已成功登录)。




一下两种代码也都尝试过,问题依旧。

//
// POST: /Account/LogOn
// 提交登录信息
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
UserModel um
= AccountMembershipService.ValidateUser(model.UserName, model.Password);
if (um != null)
{
AddCookie(um.UserID, um.Name, um.Roles, model.RememberMe);
Session[
"UserInfo"] = um;
if (um.Roles == "User")
{
// 如果为系统用户,同步登录到UCenter
ucClient.UC_User_Synlogin(um.UCenterID);
}
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError(
"", "您尝试的登录不成功!");
return View(model);
}
}
else
{
return View(model);
}
}
//
// POST: /Account/LogOn
// 提交登录信息
[HttpPost]
public ActionResult LogOn(LogOnModel model)
{
string returnUrl = Request["ReturnUrl"];
if (ModelState.IsValid)
{
UserModel um
= AccountMembershipService.ValidateUser(model.UserName, model.Password);
if (um != null)
{
AddCookie(um.UserID, um.Name, um.Roles, model.RememberMe);
Session[
"UserInfo"] = um;
if (um.Roles == "User")
{
// 如果为系统用户,同步登录到UCenter
ucClient.UC_User_Synlogin(um.UCenterID);
}
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError(
"", "您尝试的登录不成功!");
return View(model);
}
}
else
{
return View(model);
}
}

问题补充: 调试发现returnUrl的值为null
翟士丹的主页 翟士丹 | 初学一级 | 园豆:195
提问于:2011-05-06 15:36
< >
分享
所有回答(5)
1

为您的表单加上RouteValues参数为读取LogOn的QueryString["ReturnUrl"]即可,如下:

<%using ( Html.BeginForm( "LogOn", "Account",new{ReturnUrl=Request.QueryString["ReturnUrl"]}, FormMethod.Post } ) )

羊圈里最帅的羊 | 园豆:207 (菜鸟二级) | 2011-11-10 09:29
0

回答正确,很好!

Jason3 | 园豆:202 (菜鸟二级) | 2012-08-02 16:35
0

嗯,不错,顶

一品带刀侍卫 | 园豆:222 (菜鸟二级) | 2013-05-24 16:50
0

地磁人 | 园豆:204 (菜鸟二级) | 2014-03-28 10:51
0

我也用同样的疑惑,望大牛们给予指点迷津

Mr.zhan | 园豆:202 (菜鸟二级) | 2015-05-29 09:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册