我正在开发一个 Angular SPA。我遇到过一种情况,我需要限制返回上一页或对其进行操作。
场景1:
URL 1: Landing page
www.myapp.com/citizen/#/wizard/introduction
URL 2: User goes to login page
www.myapp.com/citizen/#/wizard/login
URL 3: Login button redirect to third party service
www.thirdpartylogin.com/login
URL 4: After successful login it redirects to
www.myapp.com/citizen/#/wizard/home
当用户现在单击后退按钮时,我不希望用户转到 URL 3。用户应该保留在 URL 4 上,甚至如果我将用户带到 URL 3 或 URL 2 也没关系。
场景 2:
URL 1: Home page
www.myapp.com/citizen/#/wizard/home
URL 2: User goes to third party payment page
www.thirdpartypayment.com/payment
URL 3: Finish
www.myapp.com/citizen/#/wizard/finish
在这种情况下,我不希望用户转到付款页面并停留在 URL 3 本身。
有什么方法可以限制或操作场景 1 和场景 2 的浏览器后退按钮吗?
最佳答案
我会通过从第三方服务登陆后添加一个步骤来做到这一点:
URL 3: Login button redirect to third party service
www.thirdpartylogin.com/login
URL 3.5: This page redirects you to the next one
www.myapp.com/citizen/#/wizard/haslogged
URL 4: After successful login it redirects to
www.myapp.com/citizen/#/wizard/home
这样,每次您从 url 4 返回时,您都会被重定向到 url 4 本身。如果你想改变行为,你可以使用 history.pushState()在重定向之前在 url 3.5 中。
关于javascript - 当上一页具有不同主机名时限制页面重定向的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35313370/