如何在登录前获取请求的Url

时间:2013-10-31 14:50:41

标签: asp.net-mvc asp.net-mvc-4

我页面中的某些控制器操作使用[Authorize]属性进行修饰。转发到登录页面工作正常,但成功登录后我想转发到请求的网址。使用Request.UrlReferrer我得到了我来自哪里的网址,但是哪里可以获得请求的操作(需要登录)?

先谢谢!

1 个答案:

答案 0 :(得分:1)

Login()操作采用名为returnUrl的字符串参数,该参数将在从登录重定向时使用。

您可以将returnUrl添加到ViewBag并返回视图。

例如:

public ActionResult Login(string returnUrl)
{
     ViewBag.ReturnUrl = returnUrl;
     return View();
}

目标操作使用发布的数据对用户进行身份验证,并使用FormsAuthentication登录用户。然后它将用户重定向回returnUrl。

[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (//Validation Check)
    {
        FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
        return Redirect(returnUrl); // Redirect to referer
    }

    ViewBag.ReturnUrl = returnUrl;
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}