项目架构SSM,防止表单二次提交采用token方式,怎样针对应用中的所有form添加一个token隐藏域,而不是在Controller中返回添加。
如果表单页面是后端渲染的,那么可以在模板引擎里针对所有的form
表单添加个input
标签。
如果是前后端分离的页面,那前端只能通过调用接口来获取token,再添加到表单里。这样只要写个统一的获取token的接口,前端写个全局的函数自动添加token,也是挺方便的。
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
我能想到的麻烦一点的做法.. 定义一个Token的注解,包含两个参数:
generate
和valid
;在请求表单的url加上@Token(genatate=true)
, save的url加上@Token(valid=true)
;然后配置一个拦截器,用于生成token及验证token。生成token时,服务端存起来这个token,同时返回客户端,提交时带上来。不过,这只能做到使用方便,全局去生成及验证token,最终也是会跟controller有些许粘连