JFinal

登录 注册

JFinal 的 creatToken 和 Token 验证有关系吗?

如题,因为手册上没写,百度到的也是几年前的答案。求解

评论

  • 07-17 21:23
    在第一个 action 中先使用 createToken 创建 token,回到页面时将该 token 值放入表单隐藏域中与数据一起提交到第二个 action,在第二个 action 中通过 validateToken 验证,用来判断是否重复提交
  • 02-27 11:05
    所以createtoken()相当于创建一个隐藏参数,用于第二个action中的校验了?是可这样理解吗?
  • 02-27 18:21
    @maxwade 可以这样理解,虽然有个约定的隐藏参数
    这个约定的参数在 com.jfinal.core.Const.java 中有定义:
    String DEFAULT_TOKEN_NAME = "_jfinal_token";

    但是,这个 "_jfinal_token" 名是不需要关注的,因为 jfinal 还会帮你生成整个隐藏表单域的内容,如下:
    StringBuilder sb = new StringBuilder();
    sb.append("<input type='hidden' name='").append(tokenName).append("' id='").append(tokenName).append("' value='").append(tokenId).append("' />");
    controller.setAttr("token", sb.toString());

    注意看最后一行代码,用户所需要做的,只需要在表单步通过下面的代码输出该 input
    隐藏域:
    #(token)

    上面的 #(token) 用在 form 表单之中,剩下的事情就是: validateToken() 了
  • 发送