Asp.net 禁止用户在注销后导航。
我的应用程序是Asp.NETMVC3,我有两个用户(管理员和普通用户)。我维护登录用户的cookies 下面是我的Cookie代码。Asp.net 禁止用户在注销后导航。,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我的应用程序是Asp.NETMVC3,我有两个用户(管理员和普通用户)。我维护登录用户的cookies 下面是我的Cookie代码。 public static void setCookiestring Password ,string UserName) { HttpCookie MyCookie= new HttpCookie("MyCookies"); MyCookie["Password"] = Password; MyCookie["UserName"
public static void setCookiestring Password ,string UserName)
{
HttpCookie MyCookie= new HttpCookie("MyCookies");
MyCookie["Password"] = Password;
MyCookie["UserName"] = UserName;
MyCookie.Expires.Add(new TimeSpan(0,30,0));
HttpContext.Current.Response.Cookies.Add(MyCookies);
}
下面是用户注销时我的cookie如何过期的代码
public static bool logout()
{
HttpCookie MyCookie= new HttpCookie("MyCookies");
MyCookie.Expires = DateTime.UtcNow.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(MyCookies);
return true;
}
我已尝试在控制器的每个索引()上检查Cookie。如果Cookie存在,它应导航到所需页面,否则应返回主页
if (!Cookie.CheckCookie())
{
//use the current url for the redirect
filterContext.HttpContext.Response.Redirect("~/Home/Index", true);
}
当用户单击“注销”时,他们被重定向到主页,但单击“上一步”按钮后,可以查看最后访问的页面。
我能做些什么,当用户点击注销时,如果他们点击后退按钮,他们仍然会被重定向到主页,而不是最后访问的页面。
请建议防止这种情况的一种方法是通过设置适当的响应头,将所有经过身份验证的页面从客户端缓存中排除。您可以查看,以获取可应用于站点已验证部分的操作筛选器的示例。@SamMKhan,因此您的意思是,即使索引操作用NoCache属性修饰,您仍然可以使用
返回按钮导航回它?我测试它时不是这样的。看看我的NoCache代码公共类NoCache:ActionFilterAttribute{public override void OnResultExecuting(ResultExecutingContext filterContext){var response=filterContext.HttpContext.response;response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));response.Cache.SetValidUntilExpires(false);response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);response.Cache.SetCacheability(HttpCacheability.NoCache);response.Cache.SetNoStore();}
这是我的主控制器[NoCache]公共操作结果索引(){return View();}
i哪里出错了,还是需要做进一步的更改?@SamMKhan,是的,这是适合我的正确代码。但是,是索引操作在应用程序中表示经过身份验证的资源吗?您应该仅使用NoCache属性来修饰作为应用程序身份验证区域一部分的操作/控制器这样,一旦用户注销,他就不能使用“上一步”按钮返回到这些操作中的一个,并且缓存中不会提供这些操作。超级完美解决方案@Darin