package cn.sdut.util;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
public class TokenUtil {
private TokenUtil(){
}
// 生成令牌
public static void saveToken(HttpServletRequest req){
String token = UUID.randomUUID().toString();
//存放在session中
req.getSession().setAttribute("TOKEN_IN_SESSION", token);
//存放在request中,可以在页面获取
req.setAttribute("token", token);
}
//验证口令
public static boolean validate(HttpServletRequest req , String token){
String s = (String) req.getSession().getAttribute("TOKEN_IN_SESSION");
if(s!=null && StringUtil.hasLength(token)){
if(token.equals(s)){
req.getSession().removeAttribute("TOKEN_IN_SESSION");
return true;
}
}
return false;
}
}
验证令牌可以在生成之后塞进session 然后在jsp页面hidden起来,验证时取出页面中的令牌号码和session中比较,如果相同,销毁令牌session,返回true跳转页面,这样如果用户后退再提交,此时session中没有令牌 比较返回false,达到不能重复提交表单的效果。