| 123456789101112131415161718192021222324252627282930313233343536373839 | <?phpnamespace app\middleware;use Tinywan\Jwt\Exception\JwtTokenException;use Tinywan\Jwt\JwtToken;use Webman\Http\Request;use Webman\Http\Response;use Webman\MiddlewareInterface;class AdminAuthCheck implements MiddlewareInterface{    public function process(Request $request, callable $handler): Response    {        try {            // 跳过不需要验证的控制器方法            $controller = new \ReflectionClass($request->controller);            $notNeedLogin = $controller->getDefaultProperties()['notNeedLogin'] ?? [];            if (in_array($request->action, $notNeedLogin)) {                return $handler($request);            }            $token = $request->header('Authorization');            if (!$token) {                throw new JwtTokenException('请先登录~', 500);            }            if (strpos($token, 'Bearer') === 0) {                $token = trim(substr($token, 6));            }            JwtToken::verify(1, $token);            $request->adminId = JwtToken::getCurrentId();            $request->adminJwtInfo = JwtToken::getExtend();            return $handler($request);        } catch (JwtTokenException $e) {            return json_fail($e->getMessage());        }    }}
 |