2014-06-15 13 views
5

Tôi đang gặp vấn đề với Auth :: check() trong tên miền phụ qua yêu cầu ajax .. Kịch bản: 2 tên miền phụLaravel CORS phiên subdomain

www.testing.dev 
api.testing.dev 

Độc đăng nhập/phiên giữa hai .. trong cấu hình laravel/session.php i đã thiết lập 'domain' => ".testing.dev" và mọi thứ đều hoạt động tốt, tôi có thể đăng nhập vào một trang và tiếp tục đăng nhập vào trang khác!

Nhưng khi tôi sử dụng ajax có một vấn đề .. kịch bản: là trong api.testing.dev, tôi thực hiện với con đom đóm, js, bất cứ điều gì

$.ajax({ 
    url: 'http://api.testing.dev/who', 
    type: 'GET', 
    cache: false 
}); 

các api.stesting.dev/who lợi nhuận:

public function getWho(){ 
    return var_dump(Auth::user()); 
} 

Các phản hồi là thông tin tài khoản của tôi! tất cả chính xác ..

nếu từ www.testing.dev tôi thực hiện cùng một truy vấn ajax, tôi nhận được Auth :: check() trả về giá trị rỗng. Mặc dù tôi nhận được phản ứng bình thường, vì vậy không có vấn đề với thiết lập tên miền chéo .. đây là tiêu đề của tôi trong trong con đường cho 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'); 

Trang web đang chạy trong localhost với wamp.

Chỉnh sửa: với trình điều khiển phiên mặc định 'driver' => 'file', sau lần đăng nhập ban đầu, trong app/storage/sessions có một tệp. Và nếu tôi chuyển từ tên miền phụ này sang tên miền phụ khác, không có tệp nào khác được tạo. Mặc dù khi tôi tạo tiền tố CORS ajax, mỗi lần tạo một tệp mới ...

+1

Trải nghiệm chính xác cùng một vấn đề ở đây. –

+0

Câu hỏi nhanh, cách bạn thiết lập tên miền của cookie? –

+1

trong tệp app/config/session.php, đặt 'miền' một cách thích hợp. (đối với một trang web đa tên miền phụ đặt nó thành ".site.com") – ActonDev

Trả lời

0

Xem cấu hình của bạn, có thể bạn có cùng sự cố với tôi. Tôi đã không sử dụng Auth, nhưng phiên và nhận được null mọi lúc. Tôi giải quyết nó bằng cách thay đổi này:

header('Access-Control-Allow-Origin: *'); 
... 
header('Access-Control-Allow-Credentials: true'); 

này:

header('Access-Control-Allow-Origin: http://localhost:9000'); 
... 
header('Access-Control-Allow-Credentials: true'); 

Lý do mà tôi thấy là khi bạn sử dụng các thông tin cần thiết để xác định nguồn gốc cho các mục đích an ninh, và cho AJAX yêu cầu nó cũng cần phải xác định thông tin đăng nhập. Tôi sử dụng Angular và tôi đã làm điều này với $httpProvider.defaults.withCredentials=true;, nhưng tôi thực sự không biết hướng dẫn tương ứng cho jQuery, nhưng tôi hy vọng bạn có thể tìm thấy nó.

Kiểm tra tiêu đề của yêu cầu và phản hồi bằng trình gỡ lỗi bạn yêu thích (Firebug cho tôi). Họ nên có một thuộc tính cookie (nó chứa một cái gì đó với "laravel", "token", vv) mà lần thứ hai phải bằng với tiêu đề phản hồi đầu tiên.

Các vấn đề liên quan