使用Spring 4.2.9
网络流:我的网页流有三页第1页,第2页和错误网页
场景:用户点击了电子邮件中的链接,我的后端代码消耗了链接,用户登陆了第1页(地址栏中的链接现在不同于用户点击),用户在第1页上执行所需的操作,然后单击继续按钮并登陆第2页。
当用户在第2页
时,我需要什么答案 0 :(得分:0)
这是一个很常见的问题。简单的谷歌搜索提供了一些可能的解决方案。你试过吗?如果是,则更新问题,更详细地说明问题。如果没有,这里有几个链接:
您可以通过配置Spring MVC过滤器(或拦截器)来实现此目的。在那里,您可以检查请求是否为GET,并且它包含您要阻止的URL。如果为true,则可以将该请求重定向到错误或访问被拒绝页面。
答案 1 :(得分:0)
为了防止用户在使用浏览器返回按钮返回时重置值,您可以在conversationScope中放置一个变量,当您使用后退按钮时,此范围中的变量不会恢复到之前的状态。您可以通过这种方式设置变量到达第2部分并在加载第1部分时进行检查,但为了使其工作,第1部分和第2部分需要在同一个流程中。
为了防止用户再次使用链接,如果他们是经过身份验证的用户,您可以在数据库中保存一个标志,说明他们已完成流程,只需在加载第1部分时查看数据库并在用户处抛出异常不应该有访问权限。如果他们是未经身份验证的用户(比如在进行调查时),请为每个用户提供一个令牌(令牌应该足够随机,以至于无法轻易强行推送)并将其存储在您的数据库中,当第1部分加载时检查令牌在数据库中,当您的流程完成后,从数据库中删除令牌。
如果您不能执行此操作,您可以使用Cookie,只需在用户到达第2部分时向其发送Cookie,他们的浏览器会在任何新请求时自动发送,如果您在第1部分你可以抛出异常。但是用户可以删除他们的cookie来绕过保护。
答案 2 :(得分:0)
将第2页更改为结束状态解决了问题。解决方案在" Spring Web Flow的权威指南"中提到。 谢谢大家的帮助。