session - Laravel 多域 session

标签 session authentication laravel cross-domain subdomain

我不是一个出色的开发人员,所以我想我遇到的问题对我来说太大了。

我有一个项目,其中当前语言有不同的子域。当我登录用户时,它只为当前子域记录。因此,当我在“en.Aproject.com”登录,然后转到“de.Aproject.com”时,用户将不会登录。他们不共享 session 。我已经尝试修改 app/sessions.php 中的“域”=> null。但是当我在这里更改值时,登录根本不起作用。然后每次在数据库中创建一个新的 session 行,而 Laravel 似乎无法识别它们。

当前域是否以某种方式保存在 session 标识符中?是否可以将一个 session 用于不同的域?我发现了一些关于 OAuth 和单点登录的内容,但我自己无法处理。

我正在考虑(当登录并且凭据正确时)通过 Ajax 调用脚本,该脚本应该为所有需要的域登录用户。但我将不得不为注销做同样的事情......而且我可能会有很多域。该项目将有一个基本页面和几个子项目(均使用不同的语言)。像这样

主项目网

en.mainproject.com

de.mainproject.com

...

Aproject.com

en.Aproject.com

德.Aproject.com

...

项目网

en.Bproject.com

de.Bproject.com

...

因此,让用户登录以喜欢 20 个不同的页面并创建 20 个 session 会感觉不对……只为所有这些页面使用一个 session 会感觉更好。

好的,我希望你理解这个问题,并且有人已经遇到了同样的问题并找到了解决方案。谢谢!!!!!!!!问候。格蒂

背景信息.. 我使用的是 Laravel 4.2

现在我只是尝试了一些东西,也许它可以帮助某人。实际上第 2 点对我来说很奇怪(见下文)

我展示了这三件事:

session ::getId()

身份验证::getName()

var_dump(Session::all())

我将它们显示在“de.Aproject.com”上。我在这里登录。

我在“en.Aproject.com”上显示它们......我仍然注销的地方(我想修复:D)

  • Session::getId() 的值在双方都不一样。这就是我猜的问题,他们应该共享相同的。
  • Auth::getName() 的值在两边是一样的(login_82e5d2c56bdd0811318f0cf078b78bfc)。我不明白。为什么当我没有登录时第二页有这个值?
  • Session::all() 的值是 ["login_82e5d2c56bdd0811318f0cf078b78bfc"] => string(17) "test@test.de"在第一个站点上,在第二个站点上它是空的。那是正确的。
  • 最佳答案

    由于默认的 Laravel 身份验证系统使用 cookie 来管理 session ,因此您实际上需要在要使用的每个子域上登录用户。为避免这种情况,您可以使用另一个 session 驱动程序,如数据库。

    关于session - Laravel 多域 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070849/

    相关文章:

    session - ColdFusion session 问题 - 一个代理 IP 后面的多个用户 - cftoken 和 cfid 似乎是共享的

    asp.net - 使用 asp.net mvc 的 API 身份验证选项

    php - 从不同路径访问 PHP session 变量

    java - Spring session 中带有 HeaderHttpSessionStrategy 的 Null HttpSessionManager

    java - 使用 Spring-Security 实现 HttpSessionLister 时出现问题

    ios - 避免在 Meteor Facebook 身份验证插件中按 'done'

    php - 此脚本的安全性

    laravel - Laravel Horizo​​n 上的尝试和重试有什么区别?

    javascript - 从其他域中的应用程序登录 RESTful Laravel API

    php - Laravel 验证一个应该正好是 10 位数字的数字