2014-11-03 7 views
6

Mam laravel serwer WWW, który zarządza wielu domen, takie jak:laravel domenach cookie auth i filtry

site1.domain.com, site2.domain.com, site3.domain.com 

mam z wielkim sukcesem dodaje nazwę strony w procesie uwierzytelniania użytkownika, a tym samym mieć pojedyncza tabela użytkowników w odniesieniu do witryn. Nie ma trwałości użytkowników w witrynach i są one uważane za unikalne. To działa dobrze.

Dla każdej witryny istnieje backend, np.

site1.domain.com/office 

W tym celu mam inny zestaw użytkowników modelu Admin. Aby to zadziałało, mam zupełnie inny zestaw ścieżek autoryzacji, inny kontroler i tak dalej. Osiągam to z następującym filtrem.

App::before(function($request) 
{ 
    if ($request->is('office*')) 
    { 
    Config::set('auth.driver', 'eloquent.admin'); 
    Config::set('auth.model', 'Admin'); 

Administratorzy ci są popularni w różnych domenach. Oznacza to, że nazwa użytkownika jest unikatowa w modelu administratora.

To działa dobrze, ale musi przejść dalej.

Chciałbym, aby logowanie i wylogowanie były spójne między witrynami. Oznacza to, że jeśli administrator zalogował się do jednego biura strony, zalogował się do nich wszystkich i wylogował się, wylogował się z nich wszystkich.

próbowałem zaktualizować filtr tak:

App::before(function($request) 
{ 
    if ($request->is('office*')) 
    { 
    Config::set('auth.driver', 'eloquent.admin'); 
    Config::set('auth.model', 'Admin'); 

    Config::set('session.path', '/office'); 
    Config::set('session.domain', '.domain.com'); // tried without leading . too 
    } 
}); 

Jednakże, jeśli mogę analizować mój cookies w przeglądarce, domena i ścieżka informacja nie uległa zmianie i pozostaje site.domain.com i/odpowiednio .

Czy możesz dowiedzieć się, jak zmienić atrybuty plików cookie sesji na podstawie mojej prośby?

Istnieje zależność witryny. O ile istnieje wiele do wielu relacji między administratorem a witryną, która określa, czy administrator może uzyskać dostęp do/biura danej witryny.

Obawiam się, że jest zalogowany administrator, dostanie on dostęp do dowolnego biura strony.

Moim zamiarem jest napisanie dodatkowego filtru "można administrować tą stroną", który sprawdzi relację.

Czy uważasz, że jest to odpowiedni środek w kontekście proponowanego uwierzytelniania między domenami dla administratorów?

+0

Jeśli nie masz nic przeciwko wszystkim użytkownikom, którzy są dzieleni między witrynami, możesz po prostu zmienić domenę plików cookie na ".domain.com". Inną opcją jest utworzenie nowego zabezpieczenia/modelu, który generuje/sprawdza oddzielny plik cookie JWT. – Sigismund

Odpowiedz

0

Jeśli otworzysz app/config/session.php jakiego sterownika używasz? Niektóre pliki, na przykład pliki, nie przechowują danych w subdomenach z niską kartą.

I rozwiązuje ten problem za pomocą Redis (jeśli używasz Homestead, powinno być już dostępne do Ciebie):

'driver' => 'redis', 

    'redis' => array(

    'cluster' => true, 

    'default' => array(
     'host'  => '127.0.0.1', 
     'port'  => 6379, 
     'database' => 0, 
    ), 

), 

to zrobić z jak różne sterowniki użyć nazwy hosta odwołać sesję dane.