qufo / jwt
简单的Json Web Token工具包
dev-master
2016-12-23 16:28 UTC
Requires
- php: >=5.6.4 || ^7.0
- illuminate/support: ~5.0
This package is not auto-updated.
Last update: 2024-09-28 19:58:06 UTC
README
为Lumen提供的简单JSON Web Token工具包。
安装
将
"qufo/jwt":"dev-master"
添加到您的composer.json文件中,并运行composer update。
配置
将以下内容添加到您的.env文件中,例如
[JWT]
JWT_SECRET=YOURSECRETWITH32CHARSET
JWT_ALGO=SHA256
JWT_ENABLE=true
JWT_TTL=60
JWT_REFRESH_TTL=60
将
$app->register(Qufo\JWT\Provider\LumenServiceProvider::class);
添加到您的bootstrap/app.php中。
如何使用
- 首先在任何代码位置构建一个令牌,例如
$jwt_token = \Qufo\JWT\JWT::encode($payload);
并将其发送给客户端,以便客户端可以获取并记住它。
- 在app/Http/Middleware中创建一个名为JWTAuth的中介件
<?php
/**
* JWT
*/
namespace App\Http\Middleware;
use Closure;
class JWTAuth
{
/**
* JWT Middleware
* @param Request $request
* @param Closure $next
* @return \Illuminate\Http\Response|\Laravel\Lumen\Http\ResponseFactory
*/
public function handle($request, Closure $next)
{
// if JWT ENABLE ?
if (!env('JWT_ENABLE',false)) {
return $next($request);
}
// Check Token
$bearerToken = $request->bearerToken();
$bearerToken = $bearerToken?:$request->input('access_token',false);
if ($bearerToken) {
try {
$token = $this->decodeToken($bearerToken);
$request->merge(['jwt'=>$token]);
return $next($request);
} catch (\Exception $e) {
return response(['message'=>$e->getMessage(),'status_code'=>$e->getCode()],403);
}
} else {
return response(['message'=>'Unauthorized,Bearer token seemed not exists.','status_code'=>401],401);
}
}
/**
* Decode Token
* @param $bearerToken
* @return mixed
* @throws \Exception
*/
private function decodeToken($bearerToken){
$token_s = \Qufo\JWT\JWT::Base64UrlDecode($bearerToken);
try {
$token = \Qufo\JWT\JWT::decode($token_s);
return $token;
} catch (\Exception $e) {
throw new \Exception($e->getMessage(),403);
}
}
}
- 将
$app->routeMiddleware([
'jwt.auth' => 'App\Http\Middleware\JWTAuth',
]);
添加到您的bootstrap/app.php中。
- 修改您的routes.php文件
$app->group(['middleware'=>'jwt.auth'],function() use ($app){
//Your Routes Protected by JWT Auth.
});
其他内容
这是一个“简单”的JWT,所以src/JWT.php中只有一个核心文件。并且,它只支持SHA256、SHA512和SHA384,您可以在.env文件中将其更改为您想要的。