默认MVC web应用程序没有返回URL

默认MVC web应用程序没有返回URL,url,asp.net-mvc-3,forms-authentication,Url,Asp.net Mvc 3,Forms Authentication,当使用FormsAuthentication实现MVC web应用程序时,FormsAuthentication机制似乎会自动将?ReturnUrl=/附加到MVC路由中。不过,我确实注意到,MVC 3提供的开箱即用的默认web应用程序实现了FormsAuthentication,但似乎没有遇到附加的ReturnUrl=/问题。我查看了代码,看不出这是在哪里处理的。有人知道吗?在AccountController的登录操作中,您将看到,如果存在返回url,用户将在成功登录后重定向到该url: [

当使用FormsAuthentication实现MVC web应用程序时,FormsAuthentication机制似乎会自动将?ReturnUrl=/附加到MVC路由中。不过,我确实注意到,MVC 3提供的开箱即用的默认web应用程序实现了FormsAuthentication,但似乎没有遇到附加的ReturnUrl=/问题。我查看了代码,看不出这是在哪里处理的。有人知道吗?

AccountController
登录
操作中,您将看到,如果存在返回url,用户将在成功登录后重定向到该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);
}

AccountController
LogOn
操作中,您将看到,如果存在返回url,用户将在成功登录后重定向到该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);
}

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

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

我想我没有充分解释我的问题。问题是默认web应用程序没有附加?ReturnUrl=/。我正在实现上面的代码,该代码确实有效(尽管注销后会引发另一个问题,您希望再次登录)。事实上,不管你去哪一页,它都不会附加任何返回URL。我想我没有充分解释我的问题。问题是默认web应用程序没有附加?ReturnUrl=/。我正在实现上面的代码,该代码确实有效(尽管注销后会引发另一个问题,您希望再次登录)。事实上,不管你去哪一页,它都不会附加任何返回URL。我遇到了完全相同的问题,我被难住了。希望有人知道出了什么问题。我遇到了完全相同的问题,我被难住了。希望有人知道出了什么问题。