鍒╃敤Token瑙e喅閲嶅閲嶅鎻愪氦:
Struts鍒╃敤鍚屾浠ょ墝(Token)鐨勬柟寮忔潵瑙e喅Web搴旂敤涓噸澶嶆彁浜ょ殑闂,鍏舵満鍒舵槸鍦╢orm琛ㄥ崟涓鍔犱竴涓殣钘忕殑鍩?淇濆瓨褰撳墠浠ょ墝鍊?鐒跺悗鍦ㄧ▼搴忎腑鍒ゆ柇姝や護鐗屽兼槸鍚﹀悎娉?
org.apache.struts.action.Action綾繪彁渚涗簡鐩稿叧鎿嶄綔Token鐨勬柟娉?
1銆乮sTokenValie鏂規硶:
鍒ゆ柇瀛樺偍鍦ㄥ綋鍓嶇敤鎴蜂細璇濅腑鐨勪護鐗屽煎拰璇鋒眰鍙傛暟涓殑浠ょ墝鍊兼槸鍚﹀尮閰?濡傛灉鍖歸厤,榪斿洖true,鍙嶄箣榪斿洖false.鍙絎﹀悎涓嬪垪鎯呭喌涔嬩竴鐨?灝變細榪斿洖false:
涓嶅瓨鍦℉ttpSession瀵硅薄;
鍦╯ession鑼冨洿鍐呮病鏈変繚瀛樹護鐗屽?
鍦ㄨ姹傚弬鏁頒腑娌℃湁浠ょ墝鍊?
瀛樺偍鍦ㄥ綋鍓嶇敤鎴穝ession鑼冨洿鍐呯殑浠ょ墝鍊煎拰璇鋒眰鍙傛暟涓殑浠ょ墝鍊間笉鍖歸厤.
2銆乺esetToken鏂規硶:
浠庡綋鍓峴ession鑼冨洿鍐呭垹闄や護鐗屽睘鎬?
3銆乻aveToken鏂規硶:
鍒涘緩涓涓柊鐨勪護鐗?騫舵妸瀹冧繚瀛樺湪褰撳墠session鑼冨洿鍐?濡傛灉HttpSession涓嶅瓨鍦?灝遍鍏堝垱寤轟竴涓狧ttpSession瀵硅薄.
濡備綍鍒╃敤涓婅堪鏂規硶搴旂敤浠ょ墝鏈哄埗瑙e喅閲嶅鎻愪氦闂:
浠ョ敤鎴鋒敞鍐屼負渚?
鍦ㄧ敤鎴瘋姹俷ewUser.jsp涔嬪墠,棣栧厛鎶婅姹傝漿鍙戝埌PrepareAction,PrepareAction 璋冪敤saveToken鏂規硶,鍒涘緩涓涓柊鐨勪護鐗?騫跺皢浠ょ墝鍊間繚瀛樺湪褰撳墠HttpSession涓?鏂板垱寤虹殑),PrepareAction鎺ョ潃鎶婅姹傝漿鍙戠粰newUser.jsp.
newUser.jsp涓殑<html:form>鏍囩鑷姩鍒ゆ柇鍦╯ession鑼冨洿鍐呮槸鍚﹀瓨鍦═oken,濡傛灉瀛樺湪,灝辮嚜鍔ㄥ湪琛ㄥ崟涓敓鎴愪竴涓寘鍚玊oken淇℃伅鐨勯殣钘忓瓧孌?渚嬪:
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="....">
鍦ㄧ敤鎴鋒彁浜よ〃鍗曞悗,鐢盜nsertUserAction澶勭悊璇鋒眰.鍦↖nsertUserAction涓?璋冪敤isTokenValid鏂規硶,鍒ゆ柇褰撳墠鐢ㄦ埛浼氳瘽涓殑浠ょ墝鍊煎拰璇鋒眰鍙傛暟涓殑浠ょ墝鍊兼槸鍚﹀尮閰?濡傛灉鍖歸厤,灝辮皟鐢╮esetToken鏂規硶,鍒犻櫎Token,鐒跺悗鎵ц鎻掑叆鏁版嵁鎿嶄綔.濡傛灉涓嶅尮閰?榪斿洖鐩稿叧閿欒鎻愮ず,榪涜鐩稿叧鎿嶄綔.
OK.閰辯傳灝卞彲浠ユ湁鏁堟斁緗噸澶嶆彁浜や簡.
濡備綍鍦ㄤ笉浣跨敤Struts鐨勫墠鎻愪笅鍒╃敤浠ょ墝鏈哄埗瑙e喅閲嶅鎻愪氦闂:
Struts鐨勪護鐗屾満鍒舵湁鍑犱釜瑕佺偣鍙互璁╂垜浠湪鏅氱殑JSP/Servlet涓В鍐抽噸澶嶆彁浜ら棶棰?
1銆佹彁渚涘嚑涓搷浣淭oken鐨勭浉鍏蟲柟娉?
鍏抽敭鏈変笁涓?
resetToken(HttpServletRequest request)-->閲嶇疆浠ょ墝鍊?
saveToken(HttpServletRequest request)-->淇濆瓨浠ょ墝鍊?
isTokenValid(HttpServletRequest request)-->媯嫻嬩護鐗屾槸鍚﹀悎娉?
2銆佸湪form琛ㄥ崟涓鍔犻殣钘忓煙,淇濆瓨褰撳墠浠ょ墝鍊?
3銆佸湪鎵ц鎸佷箙鎬ф暟鎹搷浣滀箣鍓嶈皟鐢ㄧ浉鍏蟲柟娉曞垽鏂綋鍓嶄護鐗屾槸鍚﹀悎娉?涔嬪悗鍦ㄨ繘琛岀浉鍏蟲搷浣?
鏂規硶鏄浉鍚岀殑,鍙槸瀹炵幇鐨勬柟寮忎笉澶竴鏍?
truts1.1 API鍏充簬鍑犱釜Token鎿嶄綔鏂規硶鐨勮鏄?
protected聽 boolean isTokenValid(javax.servlet.http.HttpServletRequest request)
聽聽聽聽聽聽聽聽聽 Return true if there is a transaction token stored in the user's current session, and the value submitted as a request parameter with this action matches it.
protected聽 boolean isTokenValid(javax.servlet.http.HttpServletRequest request, boolean reset)
聽聽聽聽聽聽聽聽聽 Return true if there is a transaction token stored in the user's current session, and the value submitted as a request parameter with this action matches it.
protected聽 void resetToken(javax.servlet.http.HttpServletRequest request)
聽聽聽聽聽聽聽聽聽 Reset the saved transaction token in the user's session.
protected聽 void saveToken(javax.servlet.http.HttpServletRequest request)
聽聽聽聽聽聽聽聽聽 Save a new transaction token in the user's current session, creating a new session if necessary.