【问题标题】:Redirect back to previous url or to auth-protected url重定向回上一个 url 或 auth-protected url
【发布时间】:2021-01-26 12:15:09
【问题描述】:

在电子商务商店中,首页有很多产品,每个产品都有一个包含自己id(/order/x)的链接。当我单击该链接时,我会使用身份验证中间件强制执行登录操作。当用户点击“购买此产品”时,我想在成功登录后将他重定向到/order/x。而且,如果用户从主页导航点击登录,我想将他重定向回主页。

案例: 当我尝试访问受身份验证中间件保护的路由时(在此示例中为:/order/1),我的 url.intended 存储为/order/1,这就是我想要的。但是当我从指向{{ route('login') }} 的主页按下登录时,url.intended 保持不变 - /order/1 URL,除非我尝试输入另一个受身份验证保护的 URL。我尝试使用以前的 URL 方法,但它没有重定向回受身份验证保护的路由 URL。 在这种情况下(使用 url.previous 时) - 如果我从主页按下“购买产品”按钮,而不是返回到订单屏幕,它会将我重定向回主页。

如果用户从主页点击登录,则将用户重定向到上一个 URL 或点击“购买产品”时重定向到 /order/1 URL 的最佳且有效的方法是什么。

【问题讨论】:

    标签: php laravel session laravel-5 redirect


    【解决方案1】:

    在php中使用$_SERVER['HTTP_REFERER']返回页面的完整URL

    【讨论】:

    • 当我在主页上使用它时(通过单击登录按钮),它工作正常,但是当我按下由 auth 中间件保护的“购买产品”按钮时,它返回相同主页网址。
    • 根据条件显示产品链接: 如果用户已登录 - product_url 如果用户未登录 - 在登录 url 中传递产品 ID 作为参数。在成功登录后的登录页面上检查产品 id 是否存在于 url 中。如果产品 id 在产品页面上找到重定向,则在主页上重定向
    【解决方案2】:

    您应该在重定向到登录页面时添加redirect_url 查询参数。并让登录控制器在登录成功后重定向到redirect_url参数中定义的URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 2016-10-14
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2019-04-09
      相关资源
      最近更新 更多