小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

登陸狀態(tài)持久化

 quasiceo 2014-08-06

登陸狀態(tài)持久化 - 小小程序控

2014-08-05 20:14:25http://www.cnblogs.com/think-in-java/p/3890688.html--點擊數(shù):2

前幾天,一直都想實現(xiàn)登陸持久化功能,于是到網(wǎng)上各種翻閱資料。最終總結實現(xiàn)登陸持久化無非那么幾種方法。

1.將信息存入session

2.將信息存入cookie,(可以采用MD5加密)

3.拉長cookie的有效時間

第一種操作最簡單,也很容易實現(xiàn),但是有個缺點:就是它的持久化只是在一次會話里面,也就是說當你關掉頁面重新開啟頁面的時候,發(fā)覺信息已經(jīng)被清除干凈了。這樣做顯然不合適,第二種是用戶名和密碼(經(jīng)過加密后)存入cookie,每次對cookie的信息進行校驗,實現(xiàn)持久化。這也不是很好的辦法,畢竟把密碼等重要信息存進cookie,也是不安全的。

我要講的就是第三種方法,也是我覺得可行性最高的方法。

session(會話)有一個sessionid這樣一個屬性,用來標識每一個用戶。而sessionid實際上還是存在cookie里面的。所以只要拉長sesiionid在cookie的存活時間就可以實現(xiàn)持久化了。

在struts2中訪問session或者cookie有兩種方法:

1.偽訪問:實現(xiàn)SessionAware接口(獲得session)

CookiesAware接口(獲得cookie)

CookieProvider接口(寫入cookie)

再者你如果要訪問Cookie還得在struts2里面配置攔截器。

<interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="cookieProvider"></interceptor-ref><interceptor-ref name="cookie"><param name="cookiesName">ValidationMsg</param><param name="cookiesValue">*</param></interceptor-ref>

但是這種方法是無法獲取sessionid,為什么呢?

因為它是偽訪問,通過這種方法返回的是一個Map.什么是Map?就是值對,它是用這樣方式去模擬HttpServletSession。

獲取不到那怎么呢?

只能以耦合性為代價了,去使用HttpServletAPI.

我們只需要這樣寫:

HttpServletResponse response = ServletActionContext.getResponse();HttpServletRequest request =ServletActionContext.getRequest();HttpSession session =request.getSession();session.setAttribute("userName",user.getUserName());String sessionid = session.getId();Cookie cookie = new Cookie("JSESSIONID",sessionid);//注意key值必須和原來一樣,否則服務器無法標識用戶cookie.setMaxAge(1*1800); // 設置cookie的生命周期1800scookie.setPath("/");response.addCookie(cookie);//cookie添加完畢

這樣就可以利用cookie的持久化,去實現(xiàn)關閉頁面下次打開還可以自動登陸了。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多