我的网站中有一个子域名,例如:
http://example.ca
http://blog.example.ca
博客只有拥有网址的人才能访问,也就是说,它不是公共知识或常识。我有一堆与此域名相关的路线,要求您登录。</ p>
我在nav.blade.php
中声明,如果用户已登录,则应该有一个下拉列表,如果没有,则不应该有下拉列表。
这一切都适用于http://blog.example.ca
,但当我转到http://example.ca
时,我不再进行身份验证了。
是否有任何方法可以让我在所有子域中进行身份验证?不只是那些需要我进行身份验证的控制器操作的人吗?
答案 0 :(得分:15)
在config/session.php
中你应该改变:
'domain' => null,
到
'domain' => '.example.ca',
您还应该清除所有Cookie
答案 1 :(得分:-1)
在config/session.php
中你应该改变:
'domain' => null,
到
'domain' => '.example.ca',
和主域
'files' => storage_path('framework/sessions'),
对于子域名,我指向主域??/framework/sessions'
的路径。
之后,我可以使用Auth
答案 2 :(得分:-1)
只想添加答案
除了在config / session中将域设置为“.domain.com”之外,还要确保主域和子域都访问相同的用户表和相同的会话表
laravel将用户ID存储在会话中,因此如果您有不同的表,则该子域中将找不到该ID,因此未登录且无法访问Auth ::
答案 3 :(得分:-1)
对于遇到相同错误的任何人,我都会遵循上述所有内容,直到执行以下操作:
选择数据库或redis作为会话驱动程序。我选择了redis并将其输入到我的环境中,甚至输入到默认的config.session.driver中,以取得良好的效果。
如上所述,我已将域名更改为“ .domain.com”。
但是,完成所有这些操作之后,奇怪的是,在我更改了会话cookie名称之前,没有任何变化。 默认情况下,它具有:“ APP_NAME”,“ Laravel”),“ _”)。 我只将“ Laravel”部分更改为我的域...
最后,从常规方式清除cookie无效。 至少对我来说,使用Firefox。 我必须打开开发工具并删除“存储”>“ Cookies”下的所有站点条目 就像魔术,繁荣! 有效! 尝试一下。