防止同一操作在用户处于当前会话期间被调用两次

问题描述 投票:0回答:1

我正在使用Struts 2框架,我的问题是:

如果用户登录系统并单击某个操作,比如说

ACTION1
,那么流程将转到操作类并执行某些方法,该方法会返回适当的结果。

用户可能会访问某些网页,然后再次点击

ACTION1

只要用户处于同一会话中,控件就不应该执行该特定方法,但结果应该与之前的相同。

我们怎样才能实现这一目标?

java jsp struts2 double-submit-problem
1个回答
1
投票

您可以尝试使用

tokenSession
拦截器

此拦截器基于

token
拦截器构建,提供 用于处理无效令牌的高级逻辑。与普通令牌不同 拦截器,该拦截器将尝试提供智能 在使用同一会话的多个请求的情况下进行故障转移。 也就是说,它将阻塞后续请求,直到第一个请求被 完成,然后不是返回
invalid.token
代码,而是 将尝试显示与原始有效的相同的响应 如果没有多个请求,则会显示操作调用 首先提交。

它将防止重复提交相同的操作或重复使用您通过

s:token
标签提供的相同令牌。

描述

停止重复提交表格。

token标签用于帮助“双击”提交 问题。如果您使用

TokenInterceptor
TokenSessionInterceptor
s:token
标签仅放置一个隐藏的 包含唯一标记的元素。

将标签放入表单中,您就永远不会再次提交相同的表单。令牌会话拦截器将尝试通过返回与第一种情况相同的响应来为您处理无效令牌。

© www.soinside.com 2019 - 2024. All rights reserved.