이 글은 주로 laravel5.6과 thinkphp3.2 사이의 세션을 공유하기 위해 redis를 사용하는 솔루션을 소개합니다. 이제 특정 참조 가치가 있어 필요한 친구들과 공유할 수 있습니다
실제 프로젝트에서는 역사적으로 프로젝트 thinkphp3.2를 사용하여 개발하였으니 이제 기능 업데이트가 필요합니다. 업데이트된 기능에 대해서는 laravel5.6을 사용하여 개발할 예정입니다.
해결해야 할 몇 가지 핵심 문제가 있는데, 그 중 하나가 사용자 인증 문제입니다. 즉, 시스템 1만 로그인한 후 시스템 2는 자동으로 로그인 정보를 인식합니다. 즉, laravel 및 Thinphp 공유 세션 문제라는 본질이 해결되어야 합니다.
session은 저장을 위해 Redis를 사용합니다. Thinkphp와 laravel은 함께 Redis에 액세스하고 동일한 쿠키를 기반으로 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를 여는 방법은 비교적 복잡합니다. 구체적인 내용은 공식 문서를 참조하여 Composer를 사용하여 Predis를 설치하고 관련 구성을 수행해야 합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!