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

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

藏色散人
풀어 주다: 2021-06-29 10:36:15
앞으로
2383명이 탐색했습니다.

실제 프로젝트에서는 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿