PHP使用JWT實現介面令牌驗證

2021-09-25 04:16:09 字數 1933 閱讀 3406

jwt封裝控制器

namespace api\user\controller;

use cmf\controller\restbasecontroller;

use firebase\jwt\jwt

;//jwt整合包

use think\cache;

use think\model;

/** * class jwt

*/class

jwtcontroller

extends

restbasecontroller

$users-

>last_login_ip =

get_client_ip()

; $jti=

time()

; $api=

[/**

*非必須。issued at。 token建立時間,unix時間戳格式

*/'lat'

=>$_server[

'request_time'],

/** *非必須。expire 指定token的生命週期。unix時間戳格式

*/'exp'

=>$_server[

'request_time'

]+$time,

/** * 非必須。jwt id。針對當前token的唯一標識

*/'jti'

=>$jti,

/** * 自定義字段

*/'usermodel'

=>$users,];

$jwt_obj =

newjwt()

; $token = $jwt_obj-

>

encode

($api,

config

('jwt.key'))

;if(!cache:

:set

($token,$jti,$time)

)return $token;

}/**

* 判斷是否登陸

*/public

function

auth

($token='')

if(!cache:

:get

($token)

)try

catch

(\exception $e)

}}

login.php 登入邏輯
public

function

login()

$data[

'user_pass']=

cmf_password

($data[

'user_pass'])

; $jwt =

new\api\user\controller\jwtcontroller()

; $token = $jwt-

>

login

($usermodel,$data[

'user_login'

],$data[

'user_pass'

],$time=

'7200000');

$response[

'user'

]=$jwt-

>

auth

($token)

; $response[

'token'

]=$token;

$this

->

return_json(1

,'登入成功'

,$response)

;}

這裡使用者登入成功返回token及使用者基礎資訊,客戶端下次請求介面時就帶token過來,後台進行驗證,識別使用者身份!

php令牌桶演算法實現介面限流

前端每次請求從令牌桶取走令牌,後端勻速向桶內投遞令牌,如果前端取到令牌,則說明這次請求有效,否則讓前端再次請求或者等待。避免了大量請求下伺服器壓力過大導致的崩潰問題。令牌桶類 class token catch redi ception exception 令牌初始化 public function...

SpringBoot 使用jwt進行身份驗證

這裡只供參考,比較使用jwt方式進行身份驗證感覺不好,最不行的就是不能退出 登陸時設定多長過期時間,只能等這個時間過了以後才算退出,服務端只能驗證請求過來的token是否通過驗證 code created by qhong on 2018 6 7 15 34 標註該註解的,就不需要登入 target...

使用Jwt令牌做單點登陸

使用springboot搭建後台,整合jwt令牌,作為token io.jsonwebtokengroupid jjwtartifactid 0.9.1version dependency jwt jwt配置,提供個jwtutils類去使用 key kaikai ty jwt生成token時的金鑰 ...