继续完善JWT认证逻辑,及调整异常返回逻辑

develop
fantasticbin 2 years ago
parent 4ec5166f50
commit 463487b939

@ -1,11 +0,0 @@
<?php
namespace App\Controller;
use Hyperf\HttpServer\Annotation\Middleware;
use Phper666\JWTAuth\Middleware\JWTAuthDefaultSceneMiddleware;
#[Middleware(JWTAuthDefaultSceneMiddleware::class)]
class AuthController extends BaseController
{
}

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace App\Controller\PunchCard\User; namespace App\Controller\PunchCard\User;
use App\Controller\AuthController; use App\Controller\BaseController;
use App\JsonRpc\PunchCardSystemExternalServiceInterface; use App\JsonRpc\PunchCardSystemExternalServiceInterface;
use App\JsonRpc\UserExternalServiceInterface; use App\JsonRpc\UserExternalServiceInterface;
use Hyperf\Di\Annotation\Inject; use Hyperf\Di\Annotation\Inject;
@ -13,7 +13,7 @@ use Hyperf\HttpServer\Annotation\GetMapping;
use Hyperf\HttpServer\Annotation\PostMapping; use Hyperf\HttpServer\Annotation\PostMapping;
#[Controller(prefix: "kq")] #[Controller(prefix: "kq")]
class UserController extends AuthController class UserController extends BaseController
{ {
/** /**
* 用户中心对外RPC服务 * 用户中心对外RPC服务

@ -11,6 +11,8 @@ declare(strict_types=1);
*/ */
namespace App\Exception\Handler; namespace App\Exception\Handler;
use App\Constants\ErrorCode;
use App\Helper\Result;
use Hyperf\Contract\StdoutLoggerInterface; use Hyperf\Contract\StdoutLoggerInterface;
use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\ExceptionHandler\ExceptionHandler;
use Hyperf\HttpMessage\Stream\SwooleStream; use Hyperf\HttpMessage\Stream\SwooleStream;
@ -25,9 +27,13 @@ class AppExceptionHandler extends ExceptionHandler
public function handle(Throwable $throwable, ResponseInterface $response) public function handle(Throwable $throwable, ResponseInterface $response)
{ {
$this->logger->error(sprintf('%s[%s] in %s', $throwable->getMessage(), $throwable->getLine(), $throwable->getFile())); $message = $throwable->getMessage();
$this->logger->error($throwable->getTraceAsString()); $error = explode('|', $message, 2);
return $response->withHeader('Server', 'Hyperf')->withStatus(500)->withBody(new SwooleStream('Internal Server Error.')); $code = $error[1] ?? $throwable->getCode() ?: ErrorCode::COMMON_ERROR;
$data = Result::error($code, $error[0]);
$responseStr = json_encode($data, JSON_UNESCAPED_UNICODE);
return $response->withHeader('Content-Type', 'application/json')->withBody(new SwooleStream($responseStr));
} }
public function isValid(Throwable $throwable): bool public function isValid(Throwable $throwable): bool

@ -17,7 +17,8 @@ return [
* 正则写法:["**", "/api/{name:.+}"] 支持模块化不做jwt token的校验例如/api/login/login * 正则写法:["**", "/api/{name:.+}"] 支持模块化不做jwt token的校验例如/api/login/login
*/ */
'no_check_route' => [ 'no_check_route' => [
["**", "/**"], // ["**", "/**"],
["**", "/kq/auth/code2OpenID"]
], ],
'login_type' => env('JWT_LOGIN_TYPE', 'mpop'), // 登录方式sso为单点登录同一个用户只能登录一个端mpop为多点登录 'login_type' => env('JWT_LOGIN_TYPE', 'mpop'), // 登录方式sso为单点登录同一个用户只能登录一个端mpop为多点登录

@ -11,5 +11,6 @@ declare(strict_types=1);
*/ */
return [ return [
'http' => [ 'http' => [
Phper666\JWTAuth\Middleware\JWTAuthDefaultSceneMiddleware::class
], ],
]; ];

Loading…
Cancel
Save