bboss 動态令牌使用示例-ajax請求擷取和傳遞令牌。bboss動态令牌實作機制參考文檔: bboss 動态令牌機制輕松搞定網站跨站攻擊和表單重複送出問題
本文内容:
1.如何編寫自己的令牌生成控制器(基于bboss mvc)
2.如何通過ajax申請令牌和傳遞令牌
接下來進入正文。
1.編寫令牌生成控制器
package com.bboss.common.action;
import javax.servlet.http.HttpServletRequest;
import org.frameworkset.util.annotations.ResponseBody;
import org.frameworkset.web.token.MemTokenManager;
public class TokenController {
/**
* 擷取令牌請求
* @param request
* @return
*/
public @ResponseBody String getToken(HttpServletRequest request)
{
MemTokenManager memTokenManager = org.frameworkset.web.token.MemTokenManagerFactory.getMemTokenManagerNoexception();
if(memTokenManager != null)//如果開啟令牌機制就會存在memTokenManager對象,否則不存在
{
return memTokenManager.buildDToken(request);
}
else
{
return null;
}
}
/**
* 擷取令牌請求
* http://localhost:8081/PDP/token/getParameterToken.freepage
* @param request
* @return
*/
public @ResponseBody String getParameterToken(HttpServletRequest request)
{
MemTokenManager memTokenManager = org.frameworkset.web.token.MemTokenManagerFactory.getMemTokenManagerNoexception();
if(memTokenManager != null)//如果開啟令牌機制就會存在memTokenManager對象,否則不存在
{
return memTokenManager.buildParameterDToken(request);
}
else
{
return null;
}
}
}
編寫mvc控制器配置檔案bboss-token.xml:
<properties>
<!-- 生成令牌控制配置檔案
author:biaoping.yin
CopyRight:bboss
Date:2011.4.13
-->
<property name="/token/*.freepage" class="com.bboss.common.action.TokenController" />
</properties>
将bboss-token.xml添加到web.xml中:
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.frameworkset.web.servlet.DispatchServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/bboss-*.xml,/WEB-INF/conf/token/bboss-token.xml
</param-value>
</init-param>
<init-param>
<param-name>messagesources</param-name>
<param-value>/WEB-INF/messages_pdp,/WEB-INF/messages_pdp_common,/WEB-INF/conf/appbom/messages_appbom</param-value>
</init-param>
<init-param>
<param-name>useCodeAsDefaultMessage</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.page</url-pattern>
</servlet-mapping>
<!-- freepage這種位址securityFilter安全認證過流器将不攔截,安全放行,如果無需任何會話資訊
可以将請求字尾定義為freepage
-->
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.freepage</url-pattern>
</servlet-mapping>
ok,到此生成令牌的控制器已經寫好,我們可以通過以下請求:
http://localhost:8081/PDP/token/getParameterToken.freepage
擷取到類似以下格式的令牌:
_dt_token_=1518435257
其中的http://localhost:8081/PDP是應用通路上下文,根據自己的情況進行修改即可。
2.通過ajax申請令牌并使用令牌
我們以jquery的ajax 方法申請令牌,然後建構一個帶令牌的url請求,js代碼如下:
$.ajax({url:"http://localhost:8081/PDP/token/getParameterToken.freepage", //指定申請令牌的url
type: "POST",
success : function(token){//成功申請令牌,token格式為_dt_token_=1518435257
var url = "aaa.page";
if(token )//将令牌作為請求參數附加到url中
{
if(url.indexOf("?") > 0)
{
url = url + "&"+token;
}
else
{
url = url + "?"+token;
}
}
window.open(url);//打開帶令牌的url對應的頁面
}
});
示例到此完畢。歡迎大家回報問題和提出寶貴建議。