【问题标题】:Laravel redirect with sessionLaravel 使用会话重定向
【发布时间】:2019-07-01 12:58:37
【问题描述】:

我想将在域 A 中创建会话的用户重定向到域 B,并且用户在重定向后应该在域 B 中登录。

我已经尝试了 redirect->withCookie() 方法和通过 cUrl 操作生成的 Laravel 会话,但在域 B 中它会将我踢到登录页面。

【问题讨论】:

  • 域A和域B是如何配置的? cookie 是否显示在域 B 的会话中?
  • Cookies 被 Laravel 覆盖。

标签: php laravel-5.2 session-cookies


【解决方案1】:

您不能像这样将Cookies 传递给其他域。 Cookie 被标记到域,因此一个域 (Domain-B) 无法读取另一个域 (Domain-A) 的 cookie。

您需要将某种不透明的凭据从域-A 传递给域-B,让域-B 知道他/她已经登录。因此,域-B 将简单地将用户注册为已登录发出自己的 cookie-session。

重定向时,您可以在查询参数中传递某种一次性或有时间限制的access token。您需要从第二个域 (Domain-B) 调用第一个域 (Domain-A) 以验证访问令牌仍然有效

理想情况下,您可以使用签名的 JSON Web 令牌 (JWT) 作为access token。使用 JWT 可以让您跳过使用第一个域(域-A)检查令牌的步骤。参考https://jwt.io生成JWT。

还有更多选项,例如OAuth,但这可能有点过头了。

【讨论】:

  • 首先,我传递给Domain-B的Cookies是通过cUrl操作在Domain-B上生成的,所以它与Domain-B有关,我在cookie的domain参数中通过@检查了它987654327@。是的,我知道JWToAuth 是实现这一目标的方法。但是为什么redirect->withCookie() 来自Laravel 的默认函数不起作用?
  • @JayPandya,该场景是当您转到域-A 时,会生成一个标记为域-A 的 cookie,并且在域-B 上也会发生同样的事情。因此,您对域 A 上的 cookie 所做的任何事情都只会影响标记到域 A 的 cookie,而不影响标记到域 B 的 cookie。我查看了文档,redirect()->withCookie() 旨在在重定向时添加额外的 cookie 键值对。它不会附加要在另一个域上检索的 cookie。来自文档,return response($content)->withCookie(cookie('name', 'value'));
  • 投票只是为了澄清redirect->withCookie()。但正如我在上面的评论中提到的,Cookies 是通过cURL 操作在 Domain-B 上创建的,因此它们绝对与 Domain-A 无关。无论如何,我已经通过oAuth 方法实现了它。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-05-19
  • 2021-11-29
  • 1970-01-01
  • 2019-02-09
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
相关资源
最近更新 更多