Spring浏览器后退按钮处理

4
使用Spring 4.2.9版本。
Web-Flow:我的Web-Flow有三个页面,page-1、page-2和error-Page。
场景:用户在电子邮件中单击链接,我的后端代码使用该链接并使用户登陆到page-1(地址栏中的链接现在与用户点击的不同),用户在page-1上完成所需的操作,并单击“继续”按钮,然后转到page-2。
当用户在page-2上时,我需要什么:
  1. 用户按浏览器后退按钮应该转到error-Page。
  2. 用户曾经在page-1上复制链接,并在新标签页中粘贴page-1链接,他们应该转到error-page。

什么是小时费率? - Iłya Bursov
2
你能指出你迄今为止所做的研究和编写的代码,以使问题符合主题要求吗? - tkruse
1
看起来你希望我们为你编写一些代码。虽然许多用户愿意为处于困境的程序员生成代码,但是他们通常只在发帖人已经尝试解决问题时才会提供帮助。展示这种努力的好方法是包括你已经编写的代码、示例输入(如果有的话)、期望的输出以及你实际得到的输出(控制台输出、tracebacks 等)。提供的细节越多,你就越有可能收到答案。请查看[FAQ]和[ask]。 - Clijsters
3个回答

0
将页面2更改为结束状态解决了问题。该解决方案在《Spring Web Flow权威指南》中提到。感谢大家的帮助。

0
  1. 这是一个非常普遍的问题。简单的谷歌搜索可以给出一些可能的解决方案。你试过了吗?如果是,那么请在问题中提供更多具体信息。如果没有,以下是几个链接:

  2. 您可以通过配置Spring MVC过滤器(或拦截器)来实现此目的。在那里,您可以检查请求是否为GET并且包含要阻止的URL。如果是,则可以将该请求重定向到错误页面或访问被拒绝页面。


0
为防止用户在使用浏览器后退按钮时重置值,您可以将变量放入conversationScope中,此范围中的变量在使用后退按钮时不会恢复到其以前的状态。您可以这样设置一个变量当他们到达第二部分时,并在加载第一部分时检查它,但要使此功能正常工作,第一部分和第二部分需要在同一个流程中。
为防止已认证用户再次使用链接,可以在数据库中保存一个标志,表明他们已完成了该流程,并在加载第一部分时简单地查看数据库,如果用户没有访问权限,则抛出异常。如果他们是未经身份验证的用户(例如进行调查时),请在url中给每个用户分配一个令牌(该令牌应足够随机,不能轻易被暴力破解),并将其存储在您的数据库中。在加载第一部分时,请检查令牌是否在数据库中,并在您的流程完成后从数据库中删除令牌。
如果无法执行上述任何操作,可以使用cookie,当用户到达第二部分时,只需向用户发送cookie,他们的浏览器将自动在任何新请求中发送它,因此如果您在第一部分看到它,则可以引发异常。但是用户可以删除其cookie以规避保护。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接