2011-03-24 43 views
1

当使用FormsAuthentication实现MVC Web应用程序时,FormsAuthentication机制会自动附加?ReturnUrl = /到您的mvc路由。不过,我注意到,MVC 3提供的默认Web应用程序实现了FormsAuthentication,但似乎没有受到追加的ReturnUrl = /问题的影响。我查看了代码,无法看到这是在处理。有人知道吗?默认MVC web应用程序没有ReturnUrl

+0

我有完全相同的问题,并难倒了。希望有人知道什么是错的。 – 2011-10-12 00:01:06

回答

1

AccountControllerLogOn动作,你会看到,如果一个返回URL存在,用户将被成功登录后重定向到它:

[HttpPost] 
public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     if (MembershipService.ValidateUser(model.UserName, model.Password)) 
     { 
      FormsService.SignIn(model.UserName, model.RememberMe); 
      if (Url.IsLocalUrl(returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       return RedirectToAction("Index", "Home"); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
     } 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 
+0

我不认为我完全解释了我的问题。问题是默认的网络应用程序不会追加?ReturnUrl = /。我正在实现上面的代码确实有效(尽管它在注销后引发了另一个问题,并且您想再次登录)。实际上,它不会附加任何返回网址,无论您转到哪个网页。 – 2011-03-26 21:11:21

0

尝试添加[授权]属性到Action或控制器。这将生成登录后重定向所需的url。

相关问题