日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

登陸狀態(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)上各種翻閱資料。最終總結(jié)實現(xiàn)登陸持久化無非那么幾種方法。

1.將信息存入session

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

3.拉長cookie的有效時間

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

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

session(會話)有一個sessionid這樣一個屬性,用來標(biāo)識每一個用戶。而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值必須和原來一樣,否則服務(wù)器無法標(biāo)識用戶cookie.setMaxAge(1*1800); // 設(shè)置cookie的生命周期1800scookie.setPath("/");response.addCookie(cookie);//cookie添加完畢

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多