簡單交代一下背景: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 = "<script>alert('身份驗證已過期,請重新登錄!');window.top.location.href='/Login/HRLogin'</script>"; filterContext.Result = msg; } } }
第一種打印結果:
後兩種方式的打印結果:
邏輯上沒啥問題,但第一種方式刪除cookie爲null後,返回到頁面後,雖然值爲null,用戶的登錄狀態依然存在,並未提示重新登錄,不知道是哪裏的問題,在此記錄一下,希望路過的大佬能解惑,拜謝!