From af5bd11c8f118de32cc66746333b258ca56d31a5 Mon Sep 17 00:00:00 2001 From: WispX <1591788658@qq.com> Date: Tue, 17 Mar 2020 13:18:36 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Upload.php | 9 +++- .../http/middleware/ApiAuthenticate.php | 17 ++++++++ application/http/middleware/Initialize.php | 29 +------------ .../http/middleware/WebAuthenticate.php | 42 +++++++++++++++++++ application/{ => index}/middleware.php | 5 ++- application/index/view/auth/login.html | 4 +- application/index/view/auth/register.html | 4 +- config/middleware.php | 4 +- route/route.php | 2 +- 9 files changed, 78 insertions(+), 38 deletions(-) create mode 100644 application/http/middleware/ApiAuthenticate.php create mode 100644 application/http/middleware/WebAuthenticate.php rename application/{ => index}/middleware.php (88%) diff --git a/application/api/controller/Upload.php b/application/api/controller/Upload.php index 0ecb78c0..2a07efec 100644 --- a/application/api/controller/Upload.php +++ b/application/api/controller/Upload.php @@ -10,6 +10,7 @@ namespace app\api\controller; use think\Db; use think\Exception; +use think\exception\ErrorException; class Upload extends Base { @@ -42,12 +43,18 @@ class Upload extends Base Db::startTrans(); try { - $data = (new \app\index\controller\Upload)->execute($this->user); + $data = (new \app\common\controller\Upload)->exec(); Db::commit(); } catch (Exception $e) { Db::rollback(); return $this->response($e->getMessage(), [], 500); + } catch (ErrorException $e) { + Db::rollback(); + return $this->response($e->getMessage(), [], 500); + } catch (\Throwable $e) { + Db::rollback(); + return $this->response($e->getMessage(), [], 500); } return $this->response('success', $data); } diff --git a/application/http/middleware/ApiAuthenticate.php b/application/http/middleware/ApiAuthenticate.php new file mode 100644 index 00000000..e209522e --- /dev/null +++ b/application/http/middleware/ApiAuthenticate.php @@ -0,0 +1,17 @@ +controller(true); + $action = $request->action(true); + $path = $controller . '/' . $action; + + return $next($request); + } +} diff --git a/application/http/middleware/Initialize.php b/application/http/middleware/Initialize.php index 2e39d008..a3b60234 100644 --- a/application/http/middleware/Initialize.php +++ b/application/http/middleware/Initialize.php @@ -2,30 +2,12 @@ namespace app\http\middleware; -use app\common\model\Users; -use think\facade\Session; use think\Request; class Initialize { - /** - * 允许不登录访问的路径 - * - * @var array - */ - private $paths = [ - 'index/index', - 'auth/login', - 'auth/register', - 'index/api' - ]; - public function handle(Request $request, \Closure $next) { - $controller = $request->controller(true); - $action = $request->action(true); - $path = $controller . '/' . $action; - // 检测程序是否已安装 if (!file_exists(app()->getAppPath() . 'install.lock')) { if ($request->controller(true) !== 'install' || $request->action(true) !== 'index') { @@ -33,16 +15,7 @@ class Initialize } } - $user = null; - if ($uid = Session::get('uid')) { - $user = Users::get($uid); - } - - if (!in_array($path, $this->paths) && !$user) { - return redirect(url('/auth/login')); - } - - $request->user = $user; + // ... return $next($request); } diff --git a/application/http/middleware/WebAuthenticate.php b/application/http/middleware/WebAuthenticate.php new file mode 100644 index 00000000..c8c02a9d --- /dev/null +++ b/application/http/middleware/WebAuthenticate.php @@ -0,0 +1,42 @@ +controller(true); + $action = $request->action(true); + $path = $controller . '/' . $action; + + $user = null; + if ($uid = Session::get('uid')) { + $user = Users::get($uid); + } + + if (!in_array($path, $this->paths) && !$user) { + return redirect(url('/auth/login')); + } + + $request->user = $user; + + return $next($request); + } +} diff --git a/application/middleware.php b/application/index/middleware.php similarity index 88% rename from application/middleware.php rename to application/index/middleware.php index 036ac16e..26b122af 100644 --- a/application/middleware.php +++ b/application/index/middleware.php @@ -12,4 +12,7 @@ // +---------------------------------------------------------------------- // | 中间件配置 // +---------------------------------------------------------------------- -return [app\http\middleware\Initialize::class]; +return [ + app\http\middleware\Initialize::class, + app\http\middleware\WebAuthenticate::class +]; diff --git a/application/index/view/auth/login.html b/application/index/view/auth/login.html index 855c49e2..a0871277 100644 --- a/application/index/view/auth/login.html +++ b/application/index/view/auth/login.html @@ -3,7 +3,7 @@ {block name="title"}登录 - {$config.site_name}{/block} {block name="css"} - + {/block} {block name="main"} @@ -49,5 +49,5 @@ {/block} {block name="js"} - + {/block} diff --git a/application/index/view/auth/register.html b/application/index/view/auth/register.html index 880ea46c..5b4cf272 100644 --- a/application/index/view/auth/register.html +++ b/application/index/view/auth/register.html @@ -3,7 +3,7 @@ {block name="title"}注册 - {$config.site_name}{/block} {block name="css"} - + {/block} {block name="main"} @@ -67,5 +67,5 @@ {/block} {block name="js"} - + {/block} diff --git a/config/middleware.php b/config/middleware.php index 8ae07321..153d2b75 100644 --- a/config/middleware.php +++ b/config/middleware.php @@ -12,6 +12,4 @@ // +---------------------------------------------------------------------- // | 中间件配置 // +---------------------------------------------------------------------- -return [ - 'Initialize' => app\http\middleware\Initialize::class, -]; +return []; diff --git a/route/route.php b/route/route.php index 35672629..f216bcc2 100644 --- a/route/route.php +++ b/route/route.php @@ -14,7 +14,7 @@ use think\facade\Route; Route::view('compatibility', 'index@tpl/compatibility'); // [Api Route] -Route::group('api', function () { +Route::name('api')->group('api', function () { Route::any('token', 'api/Token/index'); Route::any('upload', 'api/Upload/index'); Route::any('image', 'api/Image/find');