2016-09-25 5 views
0

Laravel 5에 사이트를 구축 중이므로 다음과 같은 세션을 관리해야합니다. 예를 들면 다음과 같습니다. 나는 사이트 [email protected]을 서버 X에서 호스팅하고 또 다른 [email protected]은 서버 Y를 데이터베이스와 함께 호스팅한다 (두 서버는 다른 국가에있다). 두 사이트 모두 동일한 데이터베이스를 사용해야하지만 세션 관리는 데이터베이스가 [email protected]에서 호스팅되는 것처럼 [email protected]에서 나를위한 전형적인 작업. 인증을 위해 laravel에서 Auth를 사용하고 있습니다. 어떻게 도와 주실 수 있습니까?동일한 데이터베이스를 사용하는 다른 서버 및 다른 도메인의 세션 관리

답변

0

두 서버에서 동일한 데이터베이스 연결을 사용해야합니다. 세션 관리를 위해 작은 세 번째 서버를 만들거나 단순히 X 서버에 Y 서버 데이터베이스에 연결하도록 지시 할 수 있습니다. 먼저 환경 변수 SESSION_DRIVER 또는 구성 속성 session.driver을 사용하여 무엇을 사용하는지에 따라 database 또는 redis으로 설정합니다. 그런 다음 구성 파일 database.phpconnections 속성 아래에 만들거나 RDBMS 인 경우 redis 아래에 연결을 만듭니다.

'connections' => [ 
    // ... 
    'session' => [ 
     'driver' => 'mysql', 
     'host'  => env('SESSION_DB_HOST'), 
     'database' => env('SESSION_DB_NAME'), 
     'username' => env('SESSION_DB_USERNAME'), 
     'password' => env('SESSION_DB_PASSWORD'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ] 
] 
// Or 
'redis' => [ 

    // ... 

    'session' => [ 
     'host'  => env('SESSION_REDIS_HOST'), 
     'port'  => env('SESSION_REDIS_PORT', 6379), 
     'database' => 0, 
    ], 

] 

그런 다음 파일 session.php에서,이 경우에서 원하는 연결, session의 이름 connection의 값을 변경합니다.

필요한 포트를 열고 권한 부여 프로세스를 수행하고 호스트 서버 (데이터베이스가 있으므로 Y 서버)에서 보안 조치를 취해야합니다. 주석에게

세션 드라이버가 응답

는 ---- laravel 세션을 관리하는 데 사용하는 메커니즘입니다. 그것은 파일, 데이터베이스, redis ...에있을 수 있습니다. 그래서 설정 파일에서 세션 드라이버를 선택하고 드라이버가 데이터베이스 인 경우 데이터베이스 연결을 지정하거나 기본 데이터베이스 연결을 사용합니다. 따라서 세 번째 서버를 만들고 데이터베이스로 Redis를 사용하려는 경우 포트 6379를 엽니 다 (기본 redis 구성을 사용하는 경우). 그러면 Laravel 설치에서 연결을 만듭니다. database.php의 연결과 같이 될 것입니다 :

SESSION_REDIS_HOST=xx.xx.xx.xx // the ip address or domain of the third server 
SESSION_REDIS_PORT= 6379 
SESSION_DRIVER=redis 

그리고 마지막으로, 당신 session.php 설정에서,이 값을 설정합니다 :

환경이나 .env 추가를에서 다음

'redis' => [ 

    // ... 

    'my_session' => [ 
     'host'  => env('SESSION_REDIS_HOST'), 
     'port'  => env('SESSION_REDIS_PORT', 6379), 
     'database' => 0, 
    ], 
] 

//... 
'connection' => 'my_session', 

동일한 세션 데이터베이스에 연결하려는 모든 Laravel 설치에서이 작업을 수행합니다.

+0

귀중한 의견을 보내 주셔서 감사합니다. 내 개념이 지금 지워졌습니다. 그러나 여전히 작은 세 번째 서버의 요구 사항을 언급 한 지점에 갇혀 있습니다. 기본 요구 사항을 자세히 설명하고 세션 구성을 유지해야 할 필요가있는 곳을 설명하십시오. 나는 아직 세션 드라이버를이 방법으로 사용하지 않았기 때문에. db 연결은 설정에서만 수행했습니다. 기본적으로 세션 드라이버는 무엇을 할 것이며 세션/쿠키가있는 서버와 어떻게 연관되는지 설명합니다. – ak001

+0

답변에 대한 설명이 추가되었습니다. –