## 1. 引入php-jwt包
composer require firebase/php-jwt
## 2. 生成token
```
//生成token
public function createJwt($userId = 'zq')
{
$key = md5('zq8876!@!'); //jwt的簽發密鑰,驗證token的時候需要用到
$time = time(); //簽發時間
$expire = $time + 14400; //過期時間
$token = array(
"user_id" => $userId,
"iss" => "http://www.najingquan.com/",//簽發組織
"aud" => "zhangqi", //簽發作者
"iat" => $time,
"nbf" => $time,
"exp" => $expire
);
$jwt = JWTUtil::encode($token, $key);
return $jwt;
}
```
## 3. 驗證token
```
//校驗jwt權限API
public function verifyJwt($jwt = '')
{
$key = md5('zq8876!@!');
try {
$jwtAuth = json_encode(JWTUtil::decode($jwt, $key, array('HS256')));
$authInfo = json_decode($jwtAuth, true);
$msg = [];
if (!empty($authInfo['user_id'])) {
$msg = [
'status' => 1001,
'msg' => 'Token驗證通過'
];
} else {
$msg = [
'status' => 1002,
'msg' => 'Token驗證不通過,用戶不存在'
];
}
return $msg;
} catch (\Firebase\JWT\ExpiredException $e) {
echo json_encode([
'status' => 1003,
'msg' => 'Token過期'
]);
exit;
} catch (\Exception $e) {
echo json_encode([
'status' => 1002,
'msg' => 'Token無效'
]);
exit;
}
}
```
## 4. 測試
生成token

驗證token

- ThinkPHP6 安裝與更新
- PHP編碼規范-保障團隊代碼風格一致
- 通用化API數據格式-簡單事情極致化
- 健壯系統服務-杜絕無效請求
- 健壯系統服務-不可預知得內部異常處理
- 健壯系統服務-變量全局過濾
- 健壯系統服務-令牌Token統一生成與驗證
- 集成JWT-實現token用戶身份驗證機制
- 敏感數據簽名-集成SHA512withRSA算法簽名
- API多版本控制
- 全站靜態化
- 擴展類庫的使用(extend)
- 開發自己的Composer擴展包
- 自定義命令行實現定時任務
- redis篇
- 集成redis-高速數據緩存
- redis分布式鎖-解決緩存穿透,緩存擊穿
- redis緩存雪崩解決方案
- redis數據隊列-抗住高并發寫
- redis限流-控制用戶訪問頻率
- 集成swagger,自動生成接口文檔
- 集成Oauth2.0 - 密碼模式
- 服務分流-提升吞吐率, 提升請求性能
- Nginx 防止域名被惡意解析
- Nginx post請求大小限制
- mysql數據庫備份
- 數據庫全量備份-建議一周或者三天進行一次全量備份
- 數據庫增量備份-一天一次增量備份
- 阿里云.idb文件單表恢復
- Git初始化
- Git簡易的命令行入門教程
- webhook自動部署
- PHP源碼保護和性能加速
- think-swoole 擁抱swoole的高性能
- 全站HTTPS安全訪問