PHP code example of zhiisland / webman-jwt-lc5
1. Go to this page and download the library: Download zhiisland/webman-jwt-lc5 library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
zhiisland / webman-jwt-lc5 example snippets
use Zhiisland\WebmanJwtLc5\JwtManager;
$jwt = new JwtManager('frontend');
$tokens = $jwt->issueTokens('10001', ['scopes' => ['read','write'], 'client' => 'WEB'], 'web-device-1');
// => ['access_token','refresh_token','expires_in','refresh_expires_in','token_type']
use Zhiisland\WebmanJwtLc5\JwtToken;
$tokens = JwtToken::generateToken([
'id' => 2022,
'name' => 'Alice',
'client' => Zhiisland\WebmanJwtLc5\JwtToken::TOKEN_CLIENT_MOBILE,
'access_exp' => 7200,
], 'frontend', Zhiisland\WebmanJwtLc5\JwtToken::TOKEN_CLIENT_MOBILE, 'iphone-15-pro');
->middleware([\Zhiisland\WebmanJwtLc5\Middleware\Authenticate::class], ['guard' => 'frontend'])
// 可选:Authenticate 之后加滑动续期
->middleware([\Zhiisland\WebmanJwtLc5\Middleware\SlidingRefresh::class], ['guard' => 'frontend'])
->middleware([\Zhiisland\WebmanJwtLc5\Middleware\Authenticate::class], ['guard' => 'frontend'])
->middleware([\Zhiisland\WebmanJwtLc5\Middleware\SlidingRefresh::class], ['guard' => 'frontend'])
// 主动刷新(手动传 refresh)
(new Zhiisland\WebmanJwtLc5\JwtManager('frontend'))->refresh($refreshToken);
// 自动从请求提取 refresh(详见下节“无需显式传 token”)
$new = Zhiisland\WebmanJwtLc5\JwtToken::refreshToken();
// 登出(拉黑当前 access),并按终端清理
Zhiisland\WebmanJwtLc5\JwtToken::clear('frontend', Zhiisland\WebmanJwtLc5\JwtToken::TOKEN_CLIENT_WEB);
$uid = Zhiisland\WebmanJwtLc5\JwtToken::getCurrentId();
$claims = Zhiisland\WebmanJwtLc5\JwtToken::getExtend();
$user = Zhiisland\WebmanJwtLc5\JwtToken::getUser(); // 需配置 user_resolver
use Zhiisland\WebmanJwtLc5\Jwt;
$tokens = Jwt::make('frontend')
->client('WEB')
->device('web-1')
->claims(['scopes' => ['read']])
->ttl(3600) // 本次 access = 3600 秒
->refreshTtl(86400) // 本次 refresh = 1 天
->issue('10001');
$plain = Jwt::make('frontend')->verifyAccess();
$new = Jwt::make('frontend')->refresh();
Jwt::make('frontend')->invalidate();
use Zhiisland\WebmanJwtLc5\Jwt;
$tokens = Jwt::issue('frontend', '10001', ['client' => 'WEB'], 'web-1');
$token = Jwt::verify('frontend', $jwt);
$new = Jwt::refresh('frontend', $refreshJwt);
Jwt::invalidate('frontend', $jwt);
// 自动从请求提取
$token = Jwt::verifyFromRequest('frontend');
$new = Jwt::refreshFromRequest('frontend');
Jwt::invalidateFromRequest('frontend');
use Zhiisland\WebmanJwtLc5\Utils\JWTUtil;
$claims = JWTUtil::getParserData('frontend'); // 解析 claims(不做签名/时间校验)
$plain = JWTUtil::verify('frontend'); // 验证并返回 Plain Token
$new = JWTUtil::refresh('frontend'); // 刷新(需请求带 refresh)
JWTUtil::invalidate('frontend'); // 拉黑当前 access
'jwks' => ['enable' => true, 'path' => '/.well-known/jwks.json']
use Webman\Route;
Route::get('/.well-known/jwks.json', [\Zhiisland\WebmanJwtLc5\Controller\JwksController::class, 'index']);