电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

ThinkPHP5實現JWT Token認證的過程(親測可用)

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

1、composer先掛載阿里云鏡像

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

2、安裝JWT擴展

composer require lcobucci/jwt 3.3

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

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

5、操作Token.php實現生成token的方法,詳細在readme.md中的Hmac位置

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

注意:生效時間+60表示1分鐘后生效,可以去掉加法運算,表示即時生效

6、自行找控制器進行測試

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

7、最終會得到結果類似如下所示:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjRmMWcyM2ExMmFhIn0.eyJpc3MiOiJmYW54aW56ZSIsImF1ZCI6InVzZXIiLCJqdGkiOiI0ZjFnMjNhMTJhYSIsImlhdCI6MTYxOTY2NjUwNywibmJmIjoxNjE5NjY2NTY3LCJleHAiOjE2MTk2NzAxMDcsInVpZCI6MTJ9.N6CkSWaNdTVk2ust9QzRa1wpY-ZCQTwp5nYPLYa_K-k

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

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

9、案例:Token在實際代碼中的應用

注意:這里為了簡單的做測試,使用的是DB操作,但是在實際代碼中不建議使用DB,必須使用MVC進行開發。

(1)、登錄的時候生成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"=>"賬號密碼有誤", " result"=>null]);	}	//登錄成功	//生成token	$token = Token : : createToken($info[ "id" ]);	$info[ "token" ] = $token;	return json([ " code "=>0, " msg"=>"登錄成功", " result"=>$info]);}

(2)、登錄后可以拿到token,然后請求其他接口的時候就驗證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)、由于登錄后的每一個方法可能都需要驗證token,所以我們把token封裝到構造中進行驗證【實例化類的時候自動調用構造,構造會在每一個要執行的方法前自動執行】

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;	}    }}

到此這篇關于ThinkPHP5實現JWT Token認證的文章就介紹到這了,更多相關ThinkPHP5 JWT Token認證內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
主站蜘蛛池模板: 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 智能气瓶柜(大型气瓶储存柜)百科 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 耐热钢-耐磨钢-山东聚金合金钢铸造有限公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 |