我注解給控制器設置中間件,中間件咋不生效呢
訪問getuserinfo,直接通過了(訪問未攜帶token),沒有進入到中間件里面。
控制器文件內(nèi)容(這里用了注解給控制器設置中間件):
<?php
namespace app\wx\controller;
use support\Request;
use Tinywan\Jwt\JwtToken;
use support\annotation\Middleware;
use app\middleware\AuthCheckTest;
class AppController
{
public function getuserinfo(Request $request){
return '登錄了、進來了';
}
public function login(Request $request){
return '未登陸、登陸';
}
}
中間件文件內(nèi)容:
<?php
namespace app\middleware;
use ReflectionClass;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
use Tinywan\Jwt\JwtToken;
class AuthCheckTest implements MiddlewareInterface
{
public function process(Request $request, callable $handler) : Response
{
//驗證token
$token = $request->header('Authorization');
if (!$token || !JWT::validate($token)) {
return response('Unauthorized', 401);
// 驗證token成功 或 不需要登陸,請求繼續(xù)向洋蔥芯穿越
}else{
return $handler($request);
}
}
}
這個wx是多應用的一個應用,上面這2個配置,當我用全局中間件配置測試的時候,中間件是有生效的。但是,沒有改動任何東西,如果我用注解給控制器配置中間件卻不生效了?
執(zhí)行 composer info 看下 webman-framework 版本信息,注解中間件在1.6.11版本才開始支持。
也有可能被其它中間件攔截了,沒走到你的中間件
路由分組不支持給某個控制器設置中間件,路由里都是基于具體的控制器設置中間件的。
下次提問把版本都帶上,這樣能得到快速回復,問題不清晰,版本不清晰的問題一般都不會被忽略掉,不回復