>PHP 프레임워크 >Laravel >세션 공유를 위해 redis를 사용하는 laravel5.6 및 thinkphp3.2의 솔루션에 대해

세션 공유를 위해 redis를 사용하는 laravel5.6 및 thinkphp3.2의 솔루션에 대해

藏色散人
藏色散人앞으로
2021-06-27 16:03:192378검색

실제 프로젝트에서는 thinkphp3.2를 사용하여 개발되었습니다. 이제 업데이트된 기능 부분이 필요합니다. laravel5.6을 사용하여 개발되었습니다.

문제 설명

해결해야 할 몇 가지 핵심 문제가 있는데, 그 중 하나가 사용자 인증 문제입니다. 즉, 시스템 1만 로그인한 후 시스템 2는 자동으로 로그인 정보를 인식합니다. 즉, laravel 및 Thinphp 공유 세션 문제라는 본질이 해결되어야 합니다.

Project design

session은 저장을 위해 Redis를 사용합니다. Thinkphp와 laravel은 함께 Redis에 액세스하고 동일한 쿠키를 기반으로 Redis에 저장된 인증된 사용자 정보를 자동으로 얻습니다.

Solution

thinkphp는 redis 지원을 활성화합니다.

thinkphp3.2에는 통합 세션에 대한 redis 지원이 없습니다. 현재로서는 이를 활성화하기 위해 PHP의 설정을 사용합니다. index.php에 다음 두 줄의 명령문을 추가합니다.

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://redis:6379");
또한 config.php 구성 파일에 추가할 수도 있습니다

이때 thinkphp가 세션을 저장할 때 PHPREDIS_SESSION을 접두사로 저장합니다. .

Laravel이 redis를 엽니다

laravel에서 redis를 여는 방법은 비교적 복잡합니다. 자세한 내용은 공식 문서를 참조하여 Composer를 사용하여 Predis를 설치하고 관련 구성을 수행해야 합니다.

laravel은 thinkphp의 세션을 가져옵니다

laravel은 PHP의 내장 세션을 완전히 지원하지 않기 때문입니다. 따라서 $_SESSION을 통해 정보를 얻을 수 있는 방법이 없습니다(정의되지 않은 변수 오류가 발생할 수도 있음). laravel의 쿠키는 암호화되어 있기 때문입니다. 따라서 laravel 자체 쿠키를 사용하여 쿠키 정보를 얻을 수 없습니다.

구체적인 구현 아이디어는 다음과 같습니다.
1 기본 쿠키를 얻습니다.
2 PHPREDIS_SESSION을 연결하여 키 만들기
3 redis를 사용하여 키에 저장된 값을 직접 가져옵니다

...
use Illuminate\Support\Facades\Redis;
...
    $cookie = $_COOKIE['PHPSESSID'];
    $session = Redis::get('PHPREDIS_SESSION:' . $cookie);

이 $session은 thinkphp 시스템의 세션 값입니다.

관련 튜토리얼 추천: "laravel 튜토리얼"

위 내용은 세션 공유를 위해 redis를 사용하는 laravel5.6 및 thinkphp3.2의 솔루션에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제