重定向到上次访问的页面(存储在cookie中)

时间:2011-04-18 08:56:57

标签: asp.net asp.net-mvc redirect cookies httpcookie

在我们的MVC应用程序中,我们希望用户在登录后被重定向到他在上一个会话中最后访问的页面。

实现这一目标的好方法是什么?

我在想httpmodule-->begin request or via the global.asax

在请求过程中的哪一点,我应该放置逻辑来检查cookie是否存在并进行重定向?在Application.init

任何建议都会非常感激!

2 个答案:

答案 0 :(得分:1)

您可以创建一个custom action filter,将当前请求的网址保存到Cookie中。然后检查登录操作方法中的cookie值,并在必要时重定向。

在执行此操作时,您只能装饰您想要的控制器和操作,这些控制器和操作是潜在的入口点。例如不是返回部分视图的行为等。

答案 1 :(得分:0)

这是正确的,点击没有事件。但是,有一个更简单的解决方案,MVC处理表单提交和重定向非常好。要存储上次访问过的URL,您可以在控制器上使用action filter。然后要处理重定向,请创建两个Login函数。一个处理GET请求,另一个处理POST请求。在POST请求中,在验证身份验证后,从cookie中检索URL(或操作)并重定向用户。

这将是这样的:

[HttpGet]
public ActionResult Login()
{
    return View();
}

[HttpPost]
public ActionResult Login(LoginViewModel model)
{
    if (authenticated)
    {
        //get cookie information
        HttpCookie cookie;
        cookie = Request.Cookies["StoredURLFromLastSession"];
        String StoredURLFromLastSession = cookie.Value;

        //Choose one of these redirect methods
        //returns to a hard coded URL
        //return Redirect(StoredURLFromLastSession);

        //redirects to a route (using routes created in global.asax
        //return RedirectToRoute(StoredURLFromLastSession);

        //redirects to a specific action/controller
        //return RedirectToAction(StoredURLFromLastSession);
    }
}

希望这有帮助。