1.创建中间件OAuthOperationCenter.php
2.`<?php
namespace App\Middleware;
use Closure;
use App\Tools\OperationCenter\Token;
use Illuminate\Support\Facades\Redis as RedisClient;
class OAuthOperationCenter
{
/**
* TOKEN_KEY string
*/
private const TOKEN_KEY = “-OPERATION-CENTER-TOEKN”;
/**
* @var string
*/
protected $token;
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ( !array_key_exists('authorization',$request->header()) ){
error('400','缺少authorization参数');
}
if ( empty($request->header()['authorization']) ){
error('400','authorization参数值不能为空');
}
$this->token = $request->header('authorization');
$this->token= trim(ltrim($this->token,'Bearer'));
$userInfo = Token::decodeToken($this->token);
$userRedis = RedisClient::get($userInfo['username'].self::TOKEN_KEY);
if ( empty($userRedis) ){
error('403','您还未登录,请先登录','Unauthorized');
}
return $next($request);
}
}
`
Token.php
<?php
/**
* Created by PhpStorm.
* Date: 20-8-26
* Time: 下午3:51
*/
namespace App\Tools\OperationCenter;
class Token
{
/**
* Notes:生成token
* Date: 20-8-26
* Time: 下午4:09
* @param $data
* @return string
*/
public static function enableToken($data) : string
{
return base64_encode(json_encode($data,512));
}
/**
* Date: 20-8-26
* Time: 下午4:08
* @param $data
* @return array
*/
public static function decodeToken($data) : array
{
return json_decode( base64_decode(str_replace(" ","+",$data)),true);
}
}