Bir alt etki alanında ayrı bir REST API'sine sahip bir sitem var, ör. api.mysite.com, CRUD isteklerini gönderdiğim.Auth :: user(), CORS istekleri ile null değerini döndürür
// Simple CORS handling
Route::filter('cors', function($route, $request, $response) {
$origin = Request::header('Origin');
$host = parse_url($origin, PHP_URL_HOST);
// Don't send response for external domains.
if (!in_array($host, Config::get('domains'))) {
App::abort();
}
$response->headers->set('Access-Control-Allow-Origin', $origin);
$response->headers->set('Access-Control-Allow-Headers', 'Accept, Accept-Encoding, Accept-Language, Content-Length, Content-Type');
$response->headers->set('Access-Control-Allow-Methods', 'DELETE, GET, PATCH, POST, PUT');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
});
Ben de jQuery $.ajax
istek üzerine crossdomain: true
ve xhrFields: { withCredentials: true }
ayarlıyorum: API alt alan yanıta uygun başlıkları ekleyerek bu filtreyi sahiptir. Talepler sunucuya gitmeyi, uygun rotaları vurmayı vb. Başarır, ancak kimlik doğrulama işleminde bir şeyler ters gitmektedir. Her seferinde Laravel, kullanıcının giriş yapmadığı gibi davranır ve Auth::user()
null değerini döndürmesi için istekte bulunur. Firebug'daki istekleri incelemek, Cookie
başlığının Laravel oturum kimliğiyle istekte gönderildiğini, ancak sunucunun yeni bir oturum başlatmaya çalışıyormuş gibi SetCookie
ile yanıt verdiğini gösterir. Muhtemelen burada aptalca bir şey yapıyorum, ama ben sadece neyi belirlemeye çalışıyorum.
Güncelleme: Bazı hata ayıklamalarından, ilginç bir şey buldum. Bunun ne anlama geldiğinden emin değilim. Söz konusu sayfaya gitmek için kullanıcının giriş yapması gerekir. Bu nedenle, sayfa yüklendiğinde tarayıcıda bir laravel_session çerezi vardır. Daha sonra, sayfa ile etkileşim kurarak bir çift (etki alanları arası) AJAX istekleri gönderirim. İlk isteğin hiç çerez seti yok ve sunucudan yeni bir laravel_session çerezi ayarlandı. İkinci istek daha sonra bu çerezi içerir, ancak arka taraftaki ilk notla ilgili hiç not almamış gibi, ona verilen cevap yine yeni bir tanımlama bilgisini geri gönderir. Bunun, çerez alanlarıyla ya da bazılarıyla ilgili bir şey olmadığını merak etmeye başladım.
Bu sorunla ilgili sorun yaşıyorum. Yerel sunucudaki labirent sunucumla etkileşim yapıyorum: local000'den 8000: 9000. Laravel_session çerezi kimliği doğrulanmış bir kullanıcıyı mı saklar? –
Sadece oturumunuzu aramak için kullanılan bir karma. Doğru olarak hatırlarsam, kimliği doğrulanmış kullanıcı oturumda yalnızca bir kimlik olarak saklanır. Auth :: user() işlevini kullanmaya çalışırsanız, gerçek kullanıcı kaydı veritabanından alınır. –