【问题标题】:Safari and Laravel - Mail VerificationSafari 和 Laravel - 邮件验证
【发布时间】:2021-04-13 13:17:39
【问题描述】:

背景故事

我已经开发了一个 Laravel 应用程序大约一个月了。在开发过程中,我只使用谷歌浏览器来测试应用程序。该项目使用 Laravel mustverify 来验证用户的电子邮件。这在谷歌浏览器中完美无缺,但是,当我使用 safari 切换到我的 MacBook 时,事情变得很糟糕。

问题

当我从应用程序收到邮件到我的邮件客户端时,我通常只需单击下面显示的“验证电子邮件地址”链接。但是,这在 Safari 中不起作用。通常,我作为经过验证的用户(在谷歌浏览器中)被发送到用户面板,但在 Safari 中,我被重定向到登录页面(未验证或“登录”),就好像会话不存在一样Safari 浏览器。

那么我尝试了什么?

  • 在我的 Mac 上尝试其他浏览器:已下载 google chrome,运行良好。
  • 花了几个小时阅读 Laravel 的 Auth 过程的文档。

我还读到this post 说 Safari 需要“www”。在 url 前面使其理解。但是我如何在 localhost 中实现这一点?

所以现在我与您联系以获取提示、想法或想法。我将在下面列出一些可能相关的信息:

  • PHP 版本:7.3.24
  • Laravel 版本:8.20.1
  • 软件堆栈:LEMP 和 LAMP(同时在不同机器上运行以进行测试)
  • Safari 版本:14.0.2

【问题讨论】:

  • 您需要登录才能验证您的电子邮件。
  • @miken32 是的,我理解那部分。但是,为什么用户在 chrome 中单击链接时会登录,但在 Safari 中单击链接时却没有?这一定与 Safari 和它管理 cookie 的方式有关吗?用户在注册过程完成后自动登录,至少我是这样理解的。
  • 这取决于您的会话持续多长时间、浏览器上的隐私设置等。用户在 Chrome 中单击链接时未登录。他们在点击链接之前已经登录。
  • @miken32 好的,感谢您的意见!你会如何处理这个问题?如果我希望我的用户能够使用 Safari,我想创建一个不需要登录的电子邮件验证系统似乎是唯一的方法?
  • 为什么用户无法登录Safari?

标签: php laravel google-chrome session safari


【解决方案1】:

编辑您的 session.same_site 配置以使用 nonenull

不要忘记在生产中使用 laxstrict

可能是一个 Safari 错误...但这是我修复它的方法...

我也在这里提供了答案...

https://laracasts.com/discuss/channels/laravel/laravel-8-email-verification-not-working-with-different-browsers

【讨论】:

    【解决方案2】:

    错误是 Safari 不信任 mailtrap 提供给我的链接。切换到普通邮件客户端时,一切正常。

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 2020-03-18
      • 2018-07-04
      • 2018-04-01
      • 1970-01-01
      • 2019-02-12
      • 2021-02-15
      • 2017-06-23
      相关资源
      最近更新 更多