2017-11-22 12 views
5

서버 a.com에서 호스팅되는 laravel 응용 프로그램이 있고이 응용 프로그램은 다른 서버의 다른 laravel 응용 프로그램 설치에 대한 모든 인증을 처리합니다. app.com - 쿠키에 저장한다 시스템의 인증/사용자 관리는laravel 응용 프로그램에서 Auth :: user()가 도메인 전체에서 null을 반환합니다.

server 2. mail.app.com 
server 3. fms.app.com 
server 4. dod.app.com 

서버 3 및 4에 초기화 함수가, 서버 3 및 4를 통해 전송 될 않는다 서버 1에서 도메인을 통해 전송 된 쿠키를 디코딩하려고 시도합니다.

public function initialize(){ 
     $mail = json_decode($logged_in_user_cookie)->email; 
     $user = User::where('email', $mail)->first();  
     if(!$user){ 
     $user = new User; 
     $user->email = $mail; 
     $user->save(); 
     } 
     Auth::login($user); 

     if(Auth::check()){ 
     //dd($user); - works fine.. 
     return redirect()->route('dashboard'); 

     }else{ 
     echo 'user not logged in '; 
     } 

    } 

서버 2, 3, 4는 또한 사용자 테이블을 가지고 있지만 암호없이, 쿠키가 이러한 서버의 안타 있도록, 시스템은 쿠키를 읽고있는 경우 쿠키 및 검사에서 사용자 개체를 추출 사용자가 존재하고 사용자를 생성 한 다음 [Auth :: login ($ user)]을 사용하여 사용자를 현재 시스템에 로그인하고 사용자가 이미있는 경우 자동으로 사용자를 로그인합니다 ..

이제 우리가 겪고있는 문제는 다음과 같습니다. return redirect() -> route ('dashboard'); 응용 프로그램의 대시 보드 페이지로 이동하고 dd (Auth :: user()) - null,

을 반환하며 왜 그런 식으로 작동하는지 알 수 없습니다. Auth :: user()는 전체 애플리케이션에서 사용할 수 있어야합니다. google이 작동하는 방식처럼 생각하면됩니다.

google.com - 하나의 로그인이 youtube drive.google.com을 포함한 모든 애플리케이션을 제어합니다. .google.com, play.google.com, news.google.com, plus.google.com, youtube.com - 우리가하려는 일입니다.

답변

2

config/session.php로 가서 'cookie'=> 'laravel_session'의 이름을 세션 이름으로 변경하십시오. 예를 들어 'cookie'=> 'foo_session'. 이것은 효과가있다.