原理:1、后端生成一个授权码,存好。并且把授权码传到前端。
2、前端把授权码传到后端,授权码一致,删除后端存好的授权码。
工具类:
public class TokenUtil { /** * 制造随机数 * @return */ public static String createToken(){ String token = UUID.randomUUID().toString(); return token; } /** * 设置随机数 * 放入前端和后端session */ public static void setToken(HttpServletRequest request, String profix){ String token = createToken(); String key = profix + "Token"; //放入前端 request.setAttribute(key,token); //放入session String sessionKey = profix.toUpperCase() + "_TOKEN_IN_SESSION"; request.getSession().setAttribute(sessionKey,token); } /** * 验证随机数是否有效 * @return */ public static boolean checkToken(HttpServletRequest request, String profix, String token){ //判断前缀是否为空 if(profix==null){ return false; } //判断session中的随机数是否有效 String sessionKey = profix.toUpperCase() + "_TOKEN_IN_SESSION"; String sessionToken = (String) request.getSession().getAttribute(sessionKey); if(sessionKey==null){ return false; } if(sessionToken.equals(token)){ return true; } return false; } /** * 删除session中的随机数 */ public static void removeAttribute(HttpServletRequest request, String profix){ String sessionKey = profix.toUpperCase() + "_TOKEN_IN_SESSION"; request.getSession().removeAttribute(sessionKey); } }
以上几乎就是表单重复提交的过程和大部分代码
,有什么不对的,请大家指正。我是个新手!