Token 令牌自实现

项目中经常会有防表单重复提交的需要 google了一下spring mvc的做法 大概看了下觉得稍微有点麻烦就自己写了一个 。

 

import java.util.UUID;

 

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.ui.ModelMap;

 

import com.yuitat.common.lang.util.CookieHelper;

 

/**

 *                       

 * @Filename TokenUtil.java

 *

 * @Description 令牌工具类

 *

 * @Version 1.0

 *

 * @Author huqing

 *

 * @Email qing.hu2009@gmail.com

 *       

 * @History

 *<li>Author: huqing</li>

 *<li>Date: 2012-3-28</li>

 *<li>Version: 1.0</li>

 *<li>Content: create</li>

 *

 */

public class TokenUtil {

private static final Logger logger = LoggerFactory.getLogger(TokenUtil.class);

public static final String COOKIE_TOKEN = "COOKIE_TOKEN";

public static final String TOKEN = "token";

/**

* 生成令牌

*

* @param response

* @param domain 哉名

*/

public static void generate(HttpServletResponse response, ModelMap modelMap) {

String uuid = UUID.randomUUID().toString();

Cookie cookie = new Cookie(COOKIE_TOKEN, uuid);

cookie.setPath("/");

CookieHelper.addCookies(response, cookie, 30 * 60);

modelMap.put(TOKEN, uuid);

}

/**

* 验证令牌 

*

* @param request

* @param response

* @param domain

* @return

*/

public static boolean verification(HttpServletRequest request, HttpServletResponse response) {

Object object = request.getParameter(TOKEN);

if (null == object) {

return false;

}

String token = object.toString();

String cookieToken = CookieHelper.getCookieByName(request, COOKIE_TOKEN);

if (token.equals(cookieToken)) {

clean(response);

return true;

} else {

logger.error("表单提交token异常 [token = " + token + ", cookieToken =" + cookieToken + "]");

return false;

}

}

/**

* 清除令牌

*

* @param response

* @param domain 哉名

*/

private static void clean(HttpServletResponse response) {

Cookie cookie = new Cookie(COOKIE_TOKEN, null);

cookie.setPath("/");

CookieHelper.removeCookie(response, cookie, COOKIE_TOKEN);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值