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 [email protected]

 *       

 * @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);

}

}

猜你喜欢

转载自huqing.iteye.com/blog/1521192