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');