bboss 动态令牌使用示例-ajax请求获取和传递令牌

简介: bboss 动态令牌使用示例-ajax请求获取和传递令牌。bboss动态令牌实现机制参考文档: bboss 动态令牌机制轻松搞定网站跨站攻击和表单重复提交问题 本文内容: 1.如何编写自己的令牌生成控制器(基于bboss mvc) 2.如何通过ajax申请令牌和传递令牌 接下来进入正文。
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对应的页面
			}
	});


示例到此完毕。欢迎大家反馈问题和提出宝贵建议。
目录
相关文章
|
6月前
|
JSON 前端开发 JavaScript
axios请求成功而$.ajax却不行排错
axios请求成功而$.ajax却不行排错
61 2
|
6月前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
6月前
|
Web App开发 JSON 前端开发
Ajax实现动态及时刷新表格数据
Ajax实现动态及时刷新表格数据
|
20天前
|
XML 前端开发 JavaScript
|
1月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
59 22
|
1月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
38 18
|
1月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
70 4
|
1月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
95 1
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
59 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
33 7
React技术栈-react使用的Ajax请求库用户搜索案例