只要用户处于当前会话中,就防止调用两次相同的操作
我正在使用Struts2框架,我的问题是
如果用户登录系统并单击某个动作就可以说ACTION1
,流程将转到动作类并执行一些方法,返回相应的结果。 他可能会访问某些网页,然后再次点击ACTION1
。
只要他在同一个会话中,现在控件不应该采用那种特定的方法,但结果应该与之前的结果相同。
我们怎样才能做到这一点?
您可以尝试使用tokenSession
拦截器。
此拦截器基于
Token
拦截器构建,为处理无效令牌提供高级逻辑。 与普通令牌拦截器不同,此拦截器将尝试在使用相同会话的多个请求的情况下提供智能故障转移。 也就是说,它将阻止后续请求,直到第一个请求完成,然后它不会返回invalid.token
代码,而是会尝试显示相同的响应,如果没有提交多个请求,原始的有效动作调用将显示首先。
它将阻止双重提交相同的操作或重复使用s:token
标记提供的相同标记。
描述
停止双重提交表格。
令牌标记用于帮助解决“双击”提交问题。 如果您使用
TokenInterceptor
或TokenSessionInterceptor
,则需要它。s:token
标记仅放置包含唯一标记的隐藏元素。
将标签放在表单中,您再也不会再提交相同的表单两次。 令牌会话拦截器将尝试通过返回与第一种情况相同的响应来为您处理无效令牌。