Auth::user() 不跨子域? - Laravel 5.2
Auth::user() doesn't travel across subdomains? - Laravel 5.2
我的站点中有一个子域,例如:
http://example.ca
http://blog.example.ca
博客只有 url 的人才能访问,也就是说,它不是 public 或常识。我有一堆与此域相关的路由需要您登录。
我已经在 nav.blade.php
中声明,如果用户已登录,则应该有一个下拉菜单,如果没有,则不应有下拉菜单。
这一切都适用于 http://blog.example.ca
,但是当我转到 http://example.ca
时,我不再通过身份验证。
larval 中有什么方法可以让我在所有子域中进行身份验证吗?不仅仅是那些需要我进行身份验证的控制器操作?
在 config/session.php
中,您应该更改:
'domain' => null,
进入
'domain' => '.example.ca',
您还应该清除所有 cookies
在 config/session.php
中,您应该更改:
'domain' => null,
进入
'domain' => '.example.ca',
和主域
'files' => storage_path('framework/sessions'),
对于子域,我指向主域的路径 ??/framework/sessions'
。
之后,我可以使用 Auth
只想补充答案
除了在 config/session 中将域设置为“.domain.com”之外,还要确保主域和子域都访问相同的用户 table 和相同的会话 table
laravel 将用户 ID 存储在会话中,因此如果您有不同的 table,则不会在子域中找到该 ID,因此无法登录且无法访问 Auth::
对于任何遇到同样错误的人,我都按照上面的步骤进行操作,直到我做了这些:
选择数据库或 redis 作为会话驱动程序。我选择了 redis,并将其输入到我的环境中,甚至输入到 config.session.driver 的默认值中,以达到很好的衡量标准。
我按照上面所有人的建议将域名更改为“.domain.com”。
然而,奇怪的是,完成所有这些后,没有任何变化,直到我更改了会话 cookie 名称。
默认情况下它有:'APP_NAME', 'Laravel'), '_').'_session'
我只将 'Laravel' 部分更改为我的域...
最后,用常规方式清除cookie也没有用。
至少对我来说使用 firefox。
我不得不打开开发工具并删除 Storage > Cookies 下的所有站点条目
就像魔术一样,繁荣!
有效!
尝试一下。
我的站点中有一个子域,例如:
http://example.ca
http://blog.example.ca
博客只有 url 的人才能访问,也就是说,它不是 public 或常识。我有一堆与此域相关的路由需要您登录。
我已经在 nav.blade.php
中声明,如果用户已登录,则应该有一个下拉菜单,如果没有,则不应有下拉菜单。
这一切都适用于 http://blog.example.ca
,但是当我转到 http://example.ca
时,我不再通过身份验证。
larval 中有什么方法可以让我在所有子域中进行身份验证吗?不仅仅是那些需要我进行身份验证的控制器操作?
在 config/session.php
中,您应该更改:
'domain' => null,
进入
'domain' => '.example.ca',
您还应该清除所有 cookies
在 config/session.php
中,您应该更改:
'domain' => null,
进入
'domain' => '.example.ca',
和主域
'files' => storage_path('framework/sessions'),
对于子域,我指向主域的路径 ??/framework/sessions'
。
之后,我可以使用 Auth
只想补充答案
除了在 config/session 中将域设置为“.domain.com”之外,还要确保主域和子域都访问相同的用户 table 和相同的会话 table
laravel 将用户 ID 存储在会话中,因此如果您有不同的 table,则不会在子域中找到该 ID,因此无法登录且无法访问 Auth::
对于任何遇到同样错误的人,我都按照上面的步骤进行操作,直到我做了这些:
选择数据库或 redis 作为会话驱动程序。我选择了 redis,并将其输入到我的环境中,甚至输入到 config.session.driver 的默认值中,以达到很好的衡量标准。
我按照上面所有人的建议将域名更改为“.domain.com”。
然而,奇怪的是,完成所有这些后,没有任何变化,直到我更改了会话 cookie 名称。 默认情况下它有:'APP_NAME', 'Laravel'), '_').'_session' 我只将 'Laravel' 部分更改为我的域...
最后,用常规方式清除cookie也没有用。 至少对我来说使用 firefox。 我不得不打开开发工具并删除 Storage > Cookies 下的所有站点条目 就像魔术一样,繁荣! 有效! 尝试一下。