【发布时间】:2014-08-05 12:58:02
【问题描述】:
我在通过 ajax 请求的子域中遇到 Auth::check() 问题.. 设想: 2个子域
www.testing.dev
api.testing.dev
这两者之间的单一登录/会话..
在 laravel config/session.php 中我设置了'domain' => ".testing.dev",一切正常,我可以登录一个页面并继续登录另一个页面!
但是当我使用 ajax 时出现问题..
场景:在api.testing.dev,我用firebug,js,随便什么
$.ajax({
url: 'http://api.testing.dev/who',
type: 'GET',
cache: false
});
api.stesting.dev/who 返回:
public function getWho(){
return var_dump( Auth::user() );
}
回复是我账号的信息!都对..
如果我从 www.testing.dev 执行相同的 ajax 查询,我会得到 Auth::check() 返回 null。虽然我得到了正常的响应,所以跨域设置没有问题..这是我在api.testing.dev路由中的标题
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, POST, GET, PUT, DELETE');
header('Access-Control-Allow-Headers: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Credentials: true');
网站使用 wamp 在 localhost 中运行。
编辑:使用默认会话驱动程序'driver' => 'file',初始登录后,app/storage/sessions 中有一个文件。如果我从一个子域转到另一个子域,则不会生成其他文件。
虽然当我执行 CORS ajax 时,每次生成一个新文件时......
【问题讨论】:
-
在这里遇到完全相同的问题。
-
快速提问,您如何设置 cookie 的域?
-
在 app/config/session.php 文件中,适当地设置“域”。 (对于多子域站点,请将其设置为“.site.com”)
-
这里也一样!使用 Laravel 5.0