37 lines
886 B
PHP
37 lines
886 B
PHP
|
<?php
|
||
|
namespace app\middleware;
|
||
|
|
||
|
use Closure;
|
||
|
use app\service\Jwt as JwtService;
|
||
|
|
||
|
/**
|
||
|
* 根据TOKEN解析用户信息
|
||
|
*
|
||
|
* Class JWT
|
||
|
* @package app\middleware
|
||
|
*/
|
||
|
class JWT
|
||
|
{
|
||
|
public function handle($request, Closure $next)
|
||
|
{
|
||
|
$authorization = $request->header('Authorization');
|
||
|
$tokenStr = $request->param('token/s', '');
|
||
|
|
||
|
if ($authorization) {
|
||
|
$authorization = str_replace('Bearer ', '', $authorization);
|
||
|
}
|
||
|
|
||
|
//优先取header中token
|
||
|
$token = $authorization ?: $tokenStr;
|
||
|
$userInfo = [];
|
||
|
if (!empty($token)) {
|
||
|
$userInfo = JwtService::parse($token);//token中携带的简易用户信息
|
||
|
}
|
||
|
|
||
|
$request->user = $userInfo;
|
||
|
// authorization用于移交ApiLogin认证
|
||
|
$request->authorization = $token;
|
||
|
|
||
|
return $next($request);
|
||
|
}
|
||
|
}
|