struts2 token实现方式

1

    struts2 的token标签 会在页面产生

 

< input type ="hidden" name ="struts.token.name" value ="struts.token" />
< input type ="hidden" name ="struts.token" value ="KUGRKLACCF1SZEKY1Z8O3KR2RLCRP3KK" />
这两个隐藏域,来确定这个页面唯一,如果刷新或者下次进入这个页面会产生一个新的 struts.token 的值,这样的话,就会防止 用户提交,或者多次提交,或者后退后再次提交 ,产生多条重复数据
2 这个里的token 的产生
new  BigInteger(165, RANDOM).toString(36).toUpperCase();
 
public static final String DEFAULT_TOKEN_NAME = "struts.token";
 
  public static final String TOKEN_NAME_FIELD = "struts.token.name";

  public static String setToken(String tokenName) {
        Map session = ActionContext.getContext().getSession();
        String token = generateGUID();
        try {
            session.put(tokenName, token);
        }
        catch(IllegalStateException e) {
            // WW-1182 explain to user what the problem is
            String msg = "Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: " + e.getMessage();
            LOG.error(msg, e);
            throw new IllegalArgumentException(msg);
        }
        return token;
    }
 
这样就只能这里的 tokenName竟然是一个变量量 ,这样的话,就解决了不同页面的key不一样,
对一个页面进行表单重复提交 进行验证,如果出现两个页面 同时添加的时候,就不能都是 默认,不然会使另外一个页面失去有效
 
 

你可能感兴趣的:(java,web)