简单交代一下背景:asp.net页面的上的切换登录按钮的点击事件实现cookie的删除。
但是好像没办法直接删除,通过网上提供的方法,可以使用jquery.cookie.js 来操作cookie的创建删除。
附下载地址:http://plugins.jquery.com/cookie/
找到了如下几种删除方式:
//切换登录 function SwitchingUser() { $.cookie('User', null, {path:'/'}); //$.cookie("User", '', { expires: -1, path: '/' }); //$.removeCookie('User', { path: '/' }); window.location.href = '@Url.Action("HRlogin","Login")'; }
第一种虽然cookie的值被清空了。通过谷歌打印我这个User=null;但是过滤器那里没有任何反应。(我过滤器里面验证判断cookie为null就要提示重新登录。)
后面两种删除cookie后,打印的结果为空,这个时候过滤器就可以正常验证了。
过滤器代码
public class LoginFilter: ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { ContentResult msg = new ContentResult(); if (HttpContext.Current.Request.Cookies["User"] == null) { msg.Content = ""; filterContext.Result = msg; } } }
第一种打印结果:
后两种方式的打印结果:
逻辑上没啥问题,但第一种方式删除cookie为null后,返回到页面后,虽然值为null,用户的登录状态依然存在,并未提示重新登录,不知道是哪里的问题,在此记录一下,希望路过的大佬能解惑,拜谢!