如何在注销时清除MVC 3路由参数

时间:2012-05-20 20:46:49

标签: asp.net asp.net-mvc-3 routes logout

我有一个使用razor的ASP.net MVC 3应用程序,当使用默认的AccountController注销当前用户时,我遇到了安全问题。单击注销(_LogoutPartial视图)后,我将被重定向到“登录”页面。很好,但当我点击浏览器上的Back时,它允许我回到Web应用程序,并且不要求我登录。

带参数的路线如下:

routes.MapRoute(
                "Person", // Route name
                "Person/{profileName}/{action}/{id}", // URL with parameters
                new { controller = "Person", action = "Index", id = UrlParameter.Optional } // defaults
            );
//example http://localhost:1946/Person/JoeBlack/ListTeamMembers

似乎{profileName}在会话中仍处于活动状态(?)并允许调用控制器。但是控制器动作{ListTeamMembers}具有[Authorize()]属性,所以我不确定它如何让用户进入......

1 个答案:

答案 0 :(得分:1)

当您按浏览器上的“后退”按钮时,将从浏览器的缓存中检索最后一页。服务器永远不会被击中。用户不再经过身份验证。这意味着如果他尝试执行某些操作并发送HTTP请求,他将被重定向到LogOn页面。防止这种情况发生的方法是从客户端浏览器缓存中排除所有经过身份验证的页面。你可以为这份工作custom NoCache action filter