Struts涓璗oken鐨勪娇鐢ㄦ柟娉?涓嶄娇鐢╤tlm:form (杞
Struts涓璗oken鐨勪娇鐢ㄦ柟娉?涓嶄娇鐢╤tlm:form (杞?
Token鐨勪娇鐢ㄦ柟娉?
浣跨敤Token鍙互闃叉褰撶敤鎴峰埛鏂伴〉闈㈠拰鐐瑰嚮鍚庨€€鎸夐挳鏃堕€犳垚鐨勯〉闈㈣〃鍗曢噸澶嶆彁浜ょ殑闂锛?
浣跨敤鏂规硶濡備笅锛?
銏?
棣栧厛瑕侀€氳繃涓€涓〉闈㈢敓鎴愪竴涓猅oken浠ょ墝锛岀敓鎴愪竴涓殢鏈烘暟
鍙互鍒涘缓涓€涓〉闈ain.jsp
鐒跺悗鍦ㄨ椤甸潰涓婃斁缃竴涓寜閽垨鑰呰秴杩炴帴 锛岃瓒呰繛鎺ユ寚鍚戜竴涓猘ction绫?
鍦ㄨ繖涓猘ction绫讳腑浣跨敤
this.saveToken(request); //鐢熸垚Token
Globals s;
return mapping.findForward("success"); //璺宠浆鍒板鍔犻〉闈?
銏?
鍦?-澧炲姞椤甸潰--涓鍏ュ涓嬩袱涓猨ar鍖?
<%@ page import="org.apache.struts.taglib.html.Constants" %>
<%@ page import="org.apache.struts.Globals" %>
鐒跺悗鍦ㄩ〉闈笂娣诲姞涓€涓殣钘忓煙
<input type="hidden" name="<%=Constants.TOKEN_KEY%>" value="<%=session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)%>"/>
姝ゅ鐨刵ame value涓殑鍊奸兘鏄浐瀹氱殑锛屼笉鍏佽鏀瑰彉
銏?
鍦?--AddUserAction-----涓紝浣跨敤isTokenValid(request)楠岃瘉Token,濡傛灉浜х敓鐨凾oken浠ょ墝闅忔満鏁颁笉鍚岋紝鍒?
璺宠浆鍒伴敊璇〉闈紝濡傛灉鐩稿悓鍒欐妸session涓殑Token鍒犻櫎锛岀劧鍚庤繘琛屼笟鍔″鐞?
if (!this.isTokenValid(request)) {
return mapping.findForward("error");
}
this.resetToken(request);//鍒欒椤甸潰鍙兘鎻愪氦涓€娆?鏃犺鍒锋柊鎴栨墜鍔ㄦ彁浜?
鎴?this.saveToken(request); //鍒欒椤甸潰鍙互(澶氭鎵嬪姩鎻愪氦,鍒锋柊涓嶄細鎻愪氦)
//涔嬪悗璺熶笟鍔′唬鐮?
娉ㄦ剰锛?
Hidden鐨勫悕绉板繀椤讳负Constants.TOKEN_KEY
Hidden鐨勫€煎繀椤讳负session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)
鎬濊矾濡備笅:
1.鍦ㄥ墠缃產ction涓? 鍦╯ession涓繚瀛樹竴涓彉閲廇
2.鍦ㄩ〉闈?鐨剅equest涓?涔熶繚瀛樹竴涓狟 璧嬪€间负A鐨勫€?
3.绗竴娆℃彁浜ゆ椂 A equels B 鍒欏繀鐩哥瓑,姝ゆ椂 閲嶇疆A鐨勫€?骞惰烦杞嚦涓婁紶椤甸潰
4. 鍚? ,濡傛灉鎵嬪姩鎻愪氦,鏃犲奖鍝嶅彲浠ョ户缁笂浼?
5.濡傛灉鐢ㄦ埛鎵嬪姩鍒锋柊椤甸潰,鍒?姝ゆ椂涓嶄細璧伴〉闈?鐩存帴鍚庡彴鐨凙CTION (request鏄笉鍙樼殑)
姝ゆ椂A equels B ==false 璺宠浆鑷砮rror椤甸潰鍗冲彲
Token鐨勪娇鐢ㄦ柟娉?
浣跨敤Token鍙互闃叉褰撶敤鎴峰埛鏂伴〉闈㈠拰鐐瑰嚮鍚庨€€鎸夐挳鏃堕€犳垚鐨勯〉闈㈣〃鍗曢噸澶嶆彁浜ょ殑闂锛?
浣跨敤鏂规硶濡備笅锛?
銏?
棣栧厛瑕侀€氳繃涓€涓〉闈㈢敓鎴愪竴涓猅oken浠ょ墝锛岀敓鎴愪竴涓殢鏈烘暟
鍙互鍒涘缓涓€涓〉闈ain.jsp
鐒跺悗鍦ㄨ椤甸潰涓婃斁缃竴涓寜閽垨鑰呰秴杩炴帴 锛岃瓒呰繛鎺ユ寚鍚戜竴涓猘ction绫?
鍦ㄨ繖涓猘ction绫讳腑浣跨敤
this.saveToken(request); //鐢熸垚Token
Globals s;
return mapping.findForward("success"); //璺宠浆鍒板鍔犻〉闈?
銏?
鍦?-澧炲姞椤甸潰--涓鍏ュ涓嬩袱涓猨ar鍖?
<%@ page import="org.apache.struts.taglib.html.Constants" %>
<%@ page import="org.apache.struts.Globals" %>
鐒跺悗鍦ㄩ〉闈笂娣诲姞涓€涓殣钘忓煙
<input type="hidden" name="<%=Constants.TOKEN_KEY%>" value="<%=session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)%>"/>
姝ゅ鐨刵ame value涓殑鍊奸兘鏄浐瀹氱殑锛屼笉鍏佽鏀瑰彉
銏?
鍦?--AddUserAction-----涓紝浣跨敤isTokenValid(request)楠岃瘉Token,濡傛灉浜х敓鐨凾oken浠ょ墝闅忔満鏁颁笉鍚岋紝鍒?
璺宠浆鍒伴敊璇〉闈紝濡傛灉鐩稿悓鍒欐妸session涓殑Token鍒犻櫎锛岀劧鍚庤繘琛屼笟鍔″鐞?
if (!this.isTokenValid(request)) {
return mapping.findForward("error");
}
this.resetToken(request);//鍒欒椤甸潰鍙兘鎻愪氦涓€娆?鏃犺鍒锋柊鎴栨墜鍔ㄦ彁浜?
鎴?this.saveToken(request); //鍒欒椤甸潰鍙互(澶氭鎵嬪姩鎻愪氦,鍒锋柊涓嶄細鎻愪氦)
//涔嬪悗璺熶笟鍔′唬鐮?
娉ㄦ剰锛?
Hidden鐨勫悕绉板繀椤讳负Constants.TOKEN_KEY
Hidden鐨勫€煎繀椤讳负session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)
鎬濊矾濡備笅:
1.鍦ㄥ墠缃產ction涓? 鍦╯ession涓繚瀛樹竴涓彉閲廇
2.鍦ㄩ〉闈?鐨剅equest涓?涔熶繚瀛樹竴涓狟 璧嬪€间负A鐨勫€?
3.绗竴娆℃彁浜ゆ椂 A equels B 鍒欏繀鐩哥瓑,姝ゆ椂 閲嶇疆A鐨勫€?骞惰烦杞嚦涓婁紶椤甸潰
4. 鍚? ,濡傛灉鎵嬪姩鎻愪氦,鏃犲奖鍝嶅彲浠ョ户缁笂浼?
5.濡傛灉鐢ㄦ埛鎵嬪姩鍒锋柊椤甸潰,鍒?姝ゆ椂涓嶄細璧伴〉闈?鐩存帴鍚庡彴鐨凙CTION (request鏄笉鍙樼殑)
姝ゆ椂A equels B ==false 璺宠浆鑷砮rror椤甸潰鍗冲彲