ThinkpHP 5 프레임 워 크 에서 JWT 를 사용 하 는 방법 예시
JWT 다운로드 주소:https://jwt.io
github 에 직접 다운로드 할 수도 있 고,coposer 를 사용 할 수도 있 습 니 다.
coposer 를 사용 하면 컴퓨터 에 coposer 가 설치 되 어 있 는 지 확인 하고 프로젝트 루트 디 렉 터 리 에 들 어가 다운로드 하면 자동 으로 vendor 디 렉 터 리 에 놓 입 니 다.
파일 생 성
저 는 common 디 렉 터 리 에 두 었 습 니 다.
사용 강좌
github 다 있어 요.
원본 코드 를 붙이다
JWTAuth.php
<?php
namespace app\common\Auth;
use \Lcobucci\JWT\Builder;
use \Lcobucci\JWT\Signer\Hmac\Sha256;
use \Lcobucci\JWT\Parser;
use \Lcobucci\JWT\ValidationData;
/**
*
*/
class JWTAuth
{
private static $instance;
/**
* JWT TOKEN
* @var [type]
*/
private $token;
/**
*
* @var string
*/
private $iss = 'api.test.com';
/**
*
* @var string
*/
private $aud = 'app.com';
private $uid;
private $secrect="#$%#$%*&^(*(*(";
private $decodeToken;
public static function getInstance() {
if(is_null(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
private function __contruct(){
}
private function __clone(){
}
public function encode(){
$time = time();
$this->token = (new builder())->setHeader('alg','HS256')
->setIssuer($this->iss)
->setAudience($this->aud)
->setIssuedAt($time) //
->setExpiration($time + 20)//
->set('uid',$this->uid)
->sign(new Sha256(), $this->secrect)//
->getToken();
return $this;
}
public function getToken(){
return (string)$this->token;
}
public function setToken($token){
$this->token = $token;
return $this;
}
/**
* uid
* @param [type] $uid [description]
*/
public function setUid($uid){
$this->uid = $uid;
return $this;
}
public function jsonDecode(){
$token = $this->token;
$this->decodeToken = (new Parser())->parse((string) $token);
// echo $this->decodeToken->getClaim('uid');
return $this->decodeToken;
}
/**
*
* @return [type] [description]
*/
public function validate(){
$data = new ValidationData();
$data->setIssuer($this->iss);
$data->setAudience($this->aud);
return $this->jsonDecode()->validate($data);
}
/**
*
* @return [type] [description]
*/
public function verify(){
$result = $this->jsonDecode()->verify(new Sha256(), $this->secrect);
return $result;
}
}
user.php 테스트 용
<?php
namespace app\index\controller;
use app\common\Auth\JWTAuth;
class User{
public function login(){
$jwtAuth = JWTAuth::getInstance();
$token = $jwtAuth->setUid(1)->encode()->getToken();
echo $token;
// var_dump(success_json_data(['token'=>$token]));
}
public function check_login(){
$jwtAuth = JWTAuth::getInstance();
$jwtAuth->setToken('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkudGVzdC5jb20iLCJhdWQiOiJhcHAuY29tIiwiaWF0IjoxNTU2MDk1MDI5LCJleHAiOjE1NTYwOTUwNDksInVpZCI6MX0.oi4rLbQFNZUJsW4fVHWiOQxfEmomuvldAV-gFKl2V74');
if($jwtAuth->validate() && $jwtAuth->verify()){
echo ' ';
}else{
echo ' ';
}
}
}
마지막.jwt 자 체 는 token 리 셋 방법 이 없 기 때문에 token 이 만 료 되면 클 라 이언 트 는 다시 로그 인 해 야 합 니 다.
thinkpHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
windows 환경 에서 Composer 를 사용 하여 ThinkPHP 5 를 설치 합 니 다.1.환경 검사,환경 에 Composer 가 설치 되 어 있 는 지 확인 하 십시오.Composer 는 PHP 의 의존 관리 도구 입 니 다.아래 명령 을 통 해 미 러 를 설정 합 니 다. 명령:composer co...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.