亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 關于Cookie的蛋疼問題

Java 關于Cookie的蛋疼問題

翻閱古今 2019-03-22 19:15:58
最近讓做一個自動登錄的功能,于是google,學習了下他人的代碼,感覺不是很難;但還是遇到了一些小挫折,很叫人蛋疼!也沒法搞定了,只能發帖呼救了~我所實現的自動登錄功能也就三步:①在登錄方法的判斷密碼的if分支中,創建cookie如下:  Cookie cookie = new Cookie("usr", username); cookie.setMaxAge(24*60*60*15); response.addCookie(cookie); Cookie cookie = new Cookie("pw", pwEncrypt); cookie.setMaxAge(24*60*60*15); response.addCookie(cookie); ②在訪問首頁的方法中,搜索cookie如下:  String username = ""; String password = ""; Cookie[] cookies = request.getCookies(); if (cookies != null) {     for (Cookie cookie : cookies) {         if ("usr".equals(cookie.getName())) {             username = cookie.getValue();         }         if ("pw".equals(cookie.getName())) {             password = cookie.getValue();         }         if (!"".equals(username) && !"".equals(password)) {             //將用戶對象放入session中         }     } } ③退出方法中,刪除cookie如下:  Cookie[] cookies = request.getCookies(); if (cookies != null) {     for (Cookie cookie : cookies) {         if ("urs".equals(cookie.getName())) {             cookie.setValue("");             cookie.setMaxAge(0);             response.addCookie(cookie);         }         if ("pw".equals(cookie.getName())) {             cookie.setValue("");             cookie.setMaxAge(0);             response.addCookie(cookie);         }     } } 其中,①②步都木問題,問題就出在第③步,無論怎樣都無法刪除cookie(最后也只能在ie的Internet選項中刪了)。點擊“退出”按鈕時,關閉瀏覽器,再打開,首頁依然顯示該用戶為登錄狀態,很是糾結??!是代碼問題,還是我瀏覽器設置問題?或者是其他什么原因?
查看完整描述

6 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

一、刪除已知名稱的Cookie(方案:重新建立同名立即刪除類型的Cookie)

Cookie newCookie=new Cookie(“username”,null); //假如要刪除名稱為username的Cookie

newCookie.setMaxAge(0); //立即刪除型

newCookie.setPath(“/”); //項目所有目錄均有效,這句很關鍵,否則不敢保證刪除

response.addCookie(newCookie); //重新寫入,將覆蓋之前的

  二、刪除所有Cookie

Cookie[] cookies=request.getCookies();

for(Cookie cookie: cookies){

cookie.setMaxAge(0);

cookie.setPath(“/”);

response.addCookie(cookie);

}


查看完整回答
反對 回復 2019-04-26
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

1、你刪cookie的方式沒問題
2、你是不是應該調用session.invalidate 銷毀session,因為
String username = "";
String password = "";
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("usr".equals(cookie.getName())) {
username = cookie.getValue();
}
if ("pw".equals(cookie.getName())) {
password = cookie.getValue();
}
if (!"".equals(username) && !"".equals(password)) {
//將用戶對象放入session中
}
}
}

你這段代碼是查用戶放到session 懷疑你又根據session中的數據判斷用戶是否登錄


查看完整回答
反對 回復 2019-04-26
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

刪除cookie的程序是沒有問題的,估計是你每次登陸的時候并不是檢測cookie中是否存在改用戶,可能是檢測session了,你可以每次退出登陸是將session銷毀試試


查看完整回答
反對 回復 2019-04-26
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

 for (Cookie cookie : cookies) {

if ("urs".equals(cookie.getName())) {

//cookie.setValue(""); // 注釋掉 
cookie.setMaxAge(0);

response.addCookie(cookie);

}

if ("pw".equals(cookie.getName())) {

//cookie.setValue(""); // 注釋掉        cookie.setMaxAge(0);   
        response.addCookie(cookie);   
    }   
}


查看完整回答
反對 回復 2019-04-26
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

點擊“退出”按鈕時,關閉瀏覽器,再打開,首頁依然顯示該用戶為登錄狀

要確認一下客戶端是否接收到了刪除cookie的命令,用firebug看看點擊退出時,瀏覽器接收到的response中有沒有set cookie指令


查看完整回答
反對 回復 2019-04-26
  • 6 回答
  • 0 關注
  • 609 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號