wesmiler 4 лет назад
Родитель
Сommit
c4aac48e81

+ 2 - 1
app/Http/Controllers/Api/BaseController.php

@@ -52,13 +52,14 @@ class BaseController extends Controller
         $this->initSystemConst();
 
         // 登录检测中间件
-        $this->middleware('member.login');
+        $this->middleware('auth.login');
 
         // 初始化登录信息
         $this->middleware(function ($request, $next) {
             // 请求头信息
             $token = $request->headers->get('Authorization');
             $token = str_replace("Bearer ", null, $token);
+
             // JWT解密token
             $jwt = new Jwt('jwt_wx');
             $userId = $jwt->verifyToken($token);

+ 1 - 1
app/Http/Kernel.php

@@ -65,6 +65,6 @@ class Kernel extends HttpKernel
         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
         'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
         'user.login' => \App\Http\Middleware\UserLogin::class,
-        'member.login' => \App\Http\Middleware\MemberLogin::class,
+        'auth.login' => \App\Http\Middleware\AuthLogin::class,
     ];
 }

+ 47 - 0
app/Http/Middleware/AuthLogin.php

@@ -0,0 +1,47 @@
+<?php
+
+
+namespace App\Http\Middleware;
+
+use App\Helpers\Jwt;
+use Closure;
+use Illuminate\Auth\Middleware\Authenticate as Middleware;
+
+class AuthLogin extends Middleware
+{
+    /**
+     * 执行句柄
+     * @param \Illuminate\Http\Request $request
+     * @param Closure $next
+     * @param mixed ...$guards
+     * @return mixed
+     * @throws \Illuminate\Auth\AuthenticationException
+     * @since 2020/8/31
+     * @author wesmiler
+     */
+    public function handle($request, Closure $next, ...$guards)
+    {
+        $response = $next($request);
+
+        $action = app('request')->route()->getAction();
+        $controller = class_basename($action['controller']);
+        list($controller, $action) = explode('@', $controller);
+        $noLoginActs = ['LoginController','TestController','AuthController','NotifyController'];
+        $token = $request->headers->get('Authorization');
+        if (strpos($token, 'Bearer ') !== false) {
+            $token = str_replace("Bearer ", null, $token);
+            // JWT解密token
+            $jwt = new Jwt('jwt_wx');
+            $userId = $jwt->verifyToken($token);
+        } else {
+            $userId = 0;
+        }
+        if (!$userId && !in_array($controller, $noLoginActs)) {
+            // 判断用户未登录就跳转至登录页面
+            // 在这里可以定制你想要的返回格式, 亦或者是 JSON 编码格式
+            return response()->json(message("请登录", false, null, 401));
+        }
+        //如果已登录则执行正常的请求
+        return $response;
+    }
+}