6

我的站点中有一个子域,例如:

http://example.ca
http://blog.example.ca

博客只有拥有该 url 的人才能访问,也就是说,它不是公共或常识。我有一堆与此域相关的路由,需要您登录。

我已经说过nav.blade.php,如果用户已登录,则应该有一个下拉菜单,如果没有,则不应该有一个下拉菜单。

这一切都适用,http://blog.example.ca但是当我去时,http://example.ca我不再经过身份验证。

larval 有什么方法可以让我在所有子域中进行身份验证?不只是那些拥有需要我进行身份验证的控制器操作的人?

4

4 回答 4

21

config/session.php你应该改变:

'domain' => null,

进入

'domain' => '.example.ca',

您还应该清除所有 cookie

于 2015-12-28T06:58:05.787 回答
-1

config/session.php你应该改变:

'domain' => null,

进入

'domain' => '.example.ca',

对于主域

'files' => storage_path('framework/sessions'), 

对于子域,我指向主域的路径??/framework/sessions'

之后,我可以使用 Auth

于 2017-09-18T04:27:07.457 回答
-1

对于遇到相同错误的任何人,我都遵循上述所有操作,直到执行以下操作:

  1. 选择数据库或 redis 作为会话驱动程序。我选择了 redis 并将其输入到我的环境中,甚至输入到默认的 config.session.driver 中,这是一个很好的衡量标准。

  2. 正如上面所有建议的那样,我将域名更改为“.domain.com”。

  3. 然而,奇怪的是,在我更改了会话 cookie 名称之前,没有任何变化。默认情况下,它有:'APP_NAME'、'Laravel')、'_')。'_session' 我只将 'Laravel' 部分更改为我的域...

  4. 最后,以传统方式清除 cookie 不起作用。至少对我来说使用 Firefox。我不得不打开开发工具并删除 Storage > Cookies 下的所有站点条目,就像魔术一样,砰!有效!试试看。

于 2019-06-07T19:46:04.183 回答
-1

只想添加到答案

除了在配置/会话中将域设置为“.domain.com”之外,还要确保主域和子域都访问相同的用户表和相同的会话表

laravel 将用户 ID 存储在会话中,因此如果您有不同的表,则在子域中找不到该 ID,因此未登录且无法访问 Auth::

于 2017-10-20T08:28:47.840 回答