用户登录后重定向到原始所需的URL

6

示例:

  1. 用户未登录
  2. 用户在购物车中有商品
  3. 用户进入/checkout页面
  4. 用户被重定向到/login页面
  5. 用户成功登录并应该被重定向回/checkout页面

在这种情况下,登录操作如何知道要将用户重定向到结账页面?我希望这在许多不同的情况下都能起作用,而不仅仅是在/checkout页面。


转到之前的页面在Zend框架中的实现类似于:https://dev59.com/4nM_5IYBdhLWcg3wvV1w - gnarf
嗨,你找到了好的解决方案吗? - Solace
4个回答

5

在登录页面中使用查询字符串参数是否足够?

例如:www.example.com/Login.php?returnUrl=[someUrl]

认证成功后,用户将被重定向到查询字符串中指定的URL。

...

编辑:这是一种通用的解决方案,可能不适用于您正在使用的框架。但可以考虑一下。


感谢您提供的解决方案,但我更希望它不作为查询字符串成为URL的一部分,这样可以更易于维护和清洁。 - abadaba
3
如果你不想让它成为URL的一部分,那么你需要将其存储在会话中。使用POST也是可能的,但我不建议这样做。 - André Hoffmann
是的,在会话/帖子中存储它也是一种可行的替代方法。 - Amir
1
似乎stackoverflow使用相同的方法来登录并进行投票。 - abadaba

0

我在SO1249274上发布了来自我的“My_Form”类的一小部分代码,其中包含表单中的“referrer”跟踪。那里发布的其他解决方案也可能帮助您解决问题。


1
很不幸,我发现HTTP_REFERER对我来说总是空白的? - abadaba
我从未在依赖HTTP_REFERER方面遇到任何问题,也许是服务器配置问题? - gnarf

0

我已经完成了一个简单的重定向到/login的参数'comeback'。登录页面会检查该参数,并检查引用者是否是我们的页面。如果是,它将重定向回该引用者。这个方法非常有效。否则,可以将重定向后的登录目标放在不同的参数中(无论是查询字符串、会话还是闪存消息)。


0

我使用会话变量来保存请求的URL。当用户成功登录后,我会检查是否设置了此会话变量。如果已设置,则将重定向到请求的URL。


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