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不一样,
对一个页面进行表单重复提交 进行验证,如果出现两个页面 同时添加的时候,就不能都是 默认,不然会使另外一个页面失去有效
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值