国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過程(親測(cè)可用)

瀏覽:218日期:2022-06-06 09:20:01

1、composer先掛載阿里云鏡像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

2、安裝JWT擴(kuò)展

composer require lcobucci/jwt 3.3

3、在vendor目錄中打開readme.md文件

4、在extend目錄中,自定義類進(jìn)行JWT操作生成token

5、操作Token.php實(shí)現(xiàn)生成token的方法,詳細(xì)在readme.md中的Hmac位置

<?phpuse Lcobucci\JWT\Builder;use Lcobucci\JWT\signer\Hmac\Sha256;class Token{	//自定義一個(gè)生成token的方法	static public function createToken($uid = null){		$signer = new Sha256(;//加密算法		$time = time(;//當(dāng)前的時(shí)間戳		$token = (new Builder())			->issuedBy( issuer: "fanxinze")//配置發(fā)行人			->canonlyBeUsedBy( audience: " user")//配置接收人			->identifiedBy( id: " quanzhankaifa",replicateAsHeader: true)//標(biāo)題id->issuedAt($time)//發(fā)出token令牌的時(shí)間			->canonlyBeUsedAfter( notBefore: $time + 60)//生效時(shí)間->expiresAt( expiration: $time + 3600)//過期時(shí)間			->with( name: " uid" , $uid)//用戶id			->sign($signer, key: " 1902a" )//簽名內(nèi)容->getToken(;//獲取token		return (string)$token;	}}

注意:生效時(shí)間+60表示1分鐘后生效,可以去掉加法運(yùn)算,表示即時(shí)生效

6、自行找控制器進(jìn)行測(cè)試

<?phpnamespace app\index\controller;use think\Controller;use Token;class Index extends Controller{	public function index()	{	$token = Token : : createToken();	return $token;	}}

7、最終會(huì)得到結(jié)果類似如下所示:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjRmMWcyM2ExMmFhIn0.eyJpc3MiOiJmYW54aW56ZSIsImF1ZCI6InVzZXIiLCJqdGkiOiI0ZjFnMjNhMTJhYSIsImlhdCI6MTYxOTY2NjUwNywibmJmIjoxNjE5NjY2NTY3LCJleHAiOjE2MTk2NzAxMDcsInVpZCI6MTJ9.N6CkSWaNdTVk2ust9QzRa1wpY-ZCQTwp5nYPLYa_K-k

8、封裝驗(yàn)證Token的方法,如果失敗返回false,如果成功返回用戶id

//驗(yàn)證tokenstatic public function verifyToken($token=null){	//檢測(cè)是否接收到了token	if(empty($token)){		return 0;	}	//代碼到50行,就表示取到token了,那么轉(zhuǎn)化成jwt認(rèn)識(shí)的token	$token = (new Parser())->parse((string) $token);	//驗(yàn)證基本設(shè)置	$data = new ValidationData();	$data->setIssuer( issuer: "teacher " );	$data->setAudience( audience: "student " );$data->setId( id: " quanzhan " );	if(!$token->validate($data)){		return 0;	}	//驗(yàn)證簽名	$signer = new sha256();	if(!$token->verify($signer, key: " 1902a" )){	return 0;	}	//驗(yàn)證通過,返回用戶id	return $token->getclaim( name:"uid");}

9、案例:Token在實(shí)際代碼中的應(yīng)用

注意:這里為了簡(jiǎn)單的做測(cè)試,使用的是DB操作,但是在實(shí)際代碼中不建議使用DB,必須使用MVC進(jìn)行開發(fā)。

(1)、登錄的時(shí)候生成token

//登錄public function login(){	$data = input();	array_shift( &array: $data);if(empty($data[ " username " ])){		return json([ "code"=>1, " msg"=>"用戶名不能為空" , " result"=>null]);	}	if(empty($data[ " password" ])){		return json([ "code "=>2, " msg"=>"密碼不能為空", " result"=>null]);	}	$data[ " password " ] = md5($data[ " password " ]);	$info = Db ::table( table: "tpshop_manager ")->where($data)->find();	if(!$info){		return json( [ "code "=>3 , " msg"=>"賬號(hào)密碼有誤", " result"=>null]);	}	//登錄成功	//生成token	$token = Token : : createToken($info[ "id" ]);	$info[ "token" ] = $token;	return json([ " code "=>0, " msg"=>"登錄成功", " result"=>$info]);}

(2)、登錄后可以拿到token,然后請(qǐng)求其他接口的時(shí)候就驗(yàn)證token是否正確,如果不正確,提示無效的token

public function index(){	$token = input(key: "token") ;	$res = Token::verifyToken($token);	if($res==0){		return json([ "code"=>1, "msg "=>"無效的Token " , "result"=>null]);	}	$data = Db::table(table: ""tpshop_manager" )->paginate(listRows: 7);	return json([ " code "=>0, " msg"=>"成功", "result"=>$data]);}

(3)、由于登錄后的每一個(gè)方法可能都需要驗(yàn)證token,所以我們把token封裝到構(gòu)造中進(jìn)行驗(yàn)證【實(shí)例化類的時(shí)候自動(dòng)調(diào)用構(gòu)造,構(gòu)造會(huì)在每一個(gè)要執(zhí)行的方法前自動(dòng)執(zhí)行】

class Base extends controller{    public function _construct(Request $request = null)	{	$token = $request->param( name: "token " );$res = Token : :verifyToken($token) ;	if($res==0){		$arr = [ " code"=>1, "msg"=>"無效的Token " , " result"=>null];		echo json_encode($arr);		die;	}    }}

到此這篇關(guān)于ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的文章就介紹到這了,更多相關(guān)ThinkPHP5 JWT Token認(rèn)證內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 久久精品国产亚洲综合色 | 国产天堂 | 日本一区二区三区在线 视频观看免费 | 国产一区二区在线不卡 | 久久成人动漫 | 一本久道在线 | 久久精品国产400部免费看 | 精品欧美一区二区在线观看欧美熟 | 一区二区精品视频 | 欧美日韩一区二区三区免费不卡 | 色综合久久一本首久久 | 日韩在线国产精品 | 国产精品大片天天看片 | 欧美大片毛片大片 | 色噜噜国产精品视频一区二区 | 日本免费www | 久久久久毛片免费观看 | 中国美女一级看片 | 色老头久久久久 | 久章草视频 | 国产一区二区高清在线 | 在线成人免费看大片 | 亚洲视频一区二区在线观看 | 成年女人免费看 | 欧美人与鲁交大毛片免费 | 免费公开视频人人人人人人人 | 中文字幕亚洲天堂 | 亚洲天堂视频一区 | 在线精品国内外视频 | 91av综合 | 日韩一级a毛片欧美一级 | 成人午夜视频免费观看 | 欧美一级毛片免费高清aa | 国产高清一 | 国产特黄特色一级特色大片 | 综合欧美视频一区二区三区 | 黄色成人免费网站 | 欧美综合自拍亚洲综合 | 国产精品莉莉欧美自在线线 | 色九九| 久草在线在线 |