>  기사  >  백엔드 개발  >  laravel5.6 및 thinkphp3.2는 redis를 사용하여 세션을 공유합니다.

laravel5.6 및 thinkphp3.2는 redis를 사용하여 세션을 공유합니다.

不言
不言원래의
2018-07-07 17:06:462136검색

이 글은 주로 laravel5.6과 thinkphp3.2 사이의 세션을 공유하기 위해 redis를 사용하는 솔루션을 소개합니다. 이제 특정 참조 가치가 있어 필요한 친구들과 공유할 수 있습니다

실제 프로젝트에서는 역사적으로 프로젝트 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 시스템의 세션 값입니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.