@JFinal 你好,想跟你请教个问题:能详细说明一下,token的作用与实现原理吗
@jFinal 我在java中使用jFinal封装好的token,可以么?框架是spring mvc + mybatis,没用jFinal的web框架
jfinal 全封装好了,使用即可
回复@JFinal : 嗯,多谢解答。可否提供下jFinal中的token关联url,方便我查看。再次感谢
看到各位大神的评论记录,受益匪浅。
作为一个刚入门token的新手,想了解一些基础概念。
token是按照@jFinal 所说的实现流程没有错。
但token是只提供这样的概念吗?具体实现,还是由开发者去自定义么?还是说目前已经有token的开发包封装好了,直接调用即可?
神经病哦,,ajax提交了,然后为了以后可以继续编辑,不跳转页面,也就是可以继续提交,这能叫不让重复提交么?这样的业务是让重复提交的,只不过用户可能存在不改动数据也一直提交提交提交,这只是对数据在前端和后端做一个校验而已,如果想增加那么点性能的话,那么这也就超出了Token的范畴,不关Token鸟事了。如果非要做一个Token来控制重复提交的问题,基于JFinal所说的补充一个注意点:就是在验证后清空Token,之后的Token还是做了对比操作?那么如何去清空Token?直接用session.setAttribute("token",null)?那么问题来了,我在前端直接把保存token的隐藏域给删掉或者把name改一改,提交到后台后。前端保存的token也是null,那么如果对比的话,那后端就认为还是第一次提交,然后又执行了业务。所以后端对比的时候,要先判断后端取的token是否为null,然后再判断是否一致。也就是if(session中的Token!=null && session的Token.equals(请求中的Token)){//说明是第一次提交}。感谢JFinal的分享以及SkipperD的投入思考。
互联网本身是不安全的,不能确定浏览器一定就能收到Ajax返回值,所以,Token防重复提交是非常必要的。。。
"修改表单时触发一个 ajax 请求后端再次createToken()并将创建好的 token 值带回来替换掉表单中老的 token 值"......... 如果后台修改了数据,在返回时候丢失了呢?前端就接收不到新的token,这样之后(网络又正常了)点击按钮都一直会提示"请勿重复提交"了吧?(除非刷新了界面才会正常了)
@JFinal
非常感谢您的回答,同样的疑问。
非常感谢,波总的回答。同样的疑问如果是ajax提交的话,第二次提交,也会被认为是重复提交如何处理。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(11)
@jFinal 我在java中使用jFinal封装好的token,可以么?框架是spring mvc + mybatis,没用jFinal的web框架
jfinal 全封装好了,使用即可
回复
@JFinal : 嗯,多谢解答。可否提供下jFinal中的token关联url,方便我查看。再次感谢
看到各位大神的评论记录,受益匪浅。
作为一个刚入门token的新手,想了解一些基础概念。
token是按照@jFinal 所说的实现流程没有错。
但token是只提供这样的概念吗?具体实现,还是由开发者去自定义么?还是说目前已经有token的开发包封装好了,直接调用即可?
引用来自“Sdanfy”的评论
神经病哦,,ajax提交了,然后为了以后可以继续编辑,不跳转页面,也就是可以继续提交,这能叫不让重复提交么?这样的业务是让重复提交的,只不过用户可能存在不改动数据也一直提交提交提交,这只是对数据在前端和后端做一个校验而已,如果想增加那么点性能的话,那么这也就超出了Token的范畴,不关Token鸟事了。如果非要做一个Token来控制重复提交的问题,基于JFinal所说的补充一个注意点:就是在验证后清空Token,之后的Token还是做了对比操作?那么如何去清空Token?直接用session.setAttribute("token",null)?那么问题来了,我在前端直接把保存token的隐藏域给删掉或者把name改一改,提交到后台后。前端保存的token也是null,那么如果对比的话,那后端就认为还是第一次提交,然后又执行了业务。所以后端对比的时候,要先判断后端取的token是否为null,然后再判断是否一致。也就是if(session中的Token!=null && session的Token.equals(请求中的Token)){//说明是第一次提交}。感谢JFinal的分享以及SkipperD的投入思考。
互联网本身是不安全的,不能确定浏览器一定就能收到Ajax返回值,所以,Token防重复提交是非常必要的。。。
神经病哦,,ajax提交了,然后为了以后可以继续编辑,不跳转页面,也就是可以继续提交,这能叫不让重复提交么?这样的业务是让重复提交的,只不过用户可能存在不改动数据也一直提交提交提交,这只是对数据在前端和后端做一个校验而已,如果想增加那么点性能的话,那么这也就超出了Token的范畴,不关Token鸟事了。如果非要做一个Token来控制重复提交的问题,基于JFinal所说的补充一个注意点:就是在验证后清空Token,之后的Token还是做了对比操作?那么如何去清空Token?直接用session.setAttribute("token",null)?那么问题来了,我在前端直接把保存token的隐藏域给删掉或者把name改一改,提交到后台后。前端保存的token也是null,那么如果对比的话,那后端就认为还是第一次提交,然后又执行了业务。所以后端对比的时候,要先判断后端取的token是否为null,然后再判断是否一致。也就是if(session中的Token!=null && session的Token.equals(请求中的Token)){//说明是第一次提交}。感谢JFinal的分享以及SkipperD的投入思考。
"修改表单时触发一个 ajax 请求后端再次createToken()并将创建好的 token 值带回来替换掉表单中老的 token 值"......... 如果后台修改了数据,在返回时候丢失了呢?前端就接收不到新的token,这样之后(网络又正常了)点击按钮都一直会提示"请勿重复提交"了吧?(除非刷新了界面才会正常了)
@JFinal
非常感谢您的回答,同样的疑问。
非常感谢,波总的回答。同样的疑问如果是ajax提交的话,第二次提交,也会被认为是重复提交如何处理。