// +---------------------------------------------------------------------- namespace app\http\middleware\out; use app\Request; use app\services\out\OutAccountServices; use crmeb\interfaces\MiddlewareInterface; use think\facade\Config; /** * Class AuthTokenMiddleware * @package app\http\middleware\out */ class AuthTokenMiddleware implements MiddlewareInterface { /** * @param Request $request * @param \Closure $next * @throws \Psr\SimpleCache\InvalidArgumentException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function handle(Request $request, \Closure $next) { $authInfo = null; $token = trim(ltrim($request->header(Config::get('cookie.token_name', 'Authori-zation')), 'Bearer')); /** @var OutAccountServices $services */ $services = app()->make(OutAccountServices::class); $outInfo = $services->parseToken($token); $request->macro('outId', function () use (&$outInfo) { return (int)$outInfo['id']; }); $request->macro('outInfo', function () use (&$outInfo) { return $outInfo; }); return $next($request); } }