token是为了防止表单重复提交
2016-05-31 18:04
267 查看
token是为了防止表单重复提交,token 原理大致为:
1:显示表单的那个 action 中使用 createToken() 生成一个随机的 token值,并存放在服务端(session或者cache中),并且传递一份到页面中
2:表单页面使用一个隐藏表单域获取后端传过来的 token值,该表单页面提交时会将此 token 值一同提交到后端
3:在表单页面提交到的 actioin 中使用 validateToken() 将服务端与表单隐藏域中的 token 值进行对比,如果服务端存在 token值并且与表单提交过来的值相等,证明是第一次提交。
4:每次校验过后服务端的 token 值会立即被清除,所以当用户重复提交时,后面的提交校验都再也无法通过。从而实现了防止重复提交的功能,validateToken 是在 synchronized 块中执行的保障了多线程下的安全性。
token 会优先存入 me.setTokenCache(ITokenCache) 指定的 TokenCache 中,如果未指定则默认使用 session 来存放
1:显示表单的那个 action 中使用 createToken() 生成一个随机的 token值,并存放在服务端(session或者cache中),并且传递一份到页面中
2:表单页面使用一个隐藏表单域获取后端传过来的 token值,该表单页面提交时会将此 token 值一同提交到后端
3:在表单页面提交到的 actioin 中使用 validateToken() 将服务端与表单隐藏域中的 token 值进行对比,如果服务端存在 token值并且与表单提交过来的值相等,证明是第一次提交。
4:每次校验过后服务端的 token 值会立即被清除,所以当用户重复提交时,后面的提交校验都再也无法通过。从而实现了防止重复提交的功能,validateToken 是在 synchronized 块中执行的保障了多线程下的安全性。
token 会优先存入 me.setTokenCache(ITokenCache) 指定的 TokenCache 中,如果未指定则默认使用 session 来存放
相关文章推荐
- hdu 1245 Saving James Bond【floyd】
- 一个简单的词法分析器
- #pragma pack(push,1)与#pragma pack(1)的区别
- iOS的事件传递响应链
- Android第三方推送(基于JPush极光)
- 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
- 【Linux运维入门】PSSH-轻量集群管理工具
- Android的ArrayAdapter
- Oracle EXP-00091解决方法
- 第14周实践项目1——排序函数模板
- 横、竖分割线
- hdu2648 shopping(map应用)
- docker 通过Dockerfile build image
- Fragment基本应用
- 冒泡排序算法及其优化
- 字符串函数原型
- Spring对Hibernate事务管理
- JQuery中的 .val()
- Android Dev Intro - ANativeWindow
- 对于COM对象使用ComPtr代替传统指针