我注解給控制器設(shè)置中間件,中間件咋不生效呢
訪問getuserinfo,直接通過了(訪問未攜帶token),沒有進(jìn)入到中間件里面。
控制器文件內(nèi)容(這里用了注解給控制器設(shè)置中間件):
<?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 '登錄了、進(jìn)來了';
}
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
{
//驗(yàn)證token
$token = $request->header('Authorization');
if (!$token || !JWT::validate($token)) {
return response('Unauthorized', 401);
// 驗(yàn)證token成功 或 不需要登陸,請(qǐng)求繼續(xù)向洋蔥芯穿越
}else{
return $handler($request);
}
}
}
這個(gè)wx是多應(yīng)用的一個(gè)應(yīng)用,上面這2個(gè)配置,當(dāng)我用全局中間件配置測(cè)試的時(shí)候,中間件是有生效的。但是,沒有改動(dòng)任何東西,如果我用注解給控制器配置中間件卻不生效了?
執(zhí)行 composer info 看下 webman-framework 版本信息,注解中間件在1.6.11版本才開始支持。
也有可能被其它中間件攔截了,沒走到你的中間件
難怪,webman-framework 1.5.18的, 中間件被攔截應(yīng)該不太可能,這是一個(gè)測(cè)試項(xiàng)目,目前只有一個(gè)中間件
如果用路由分組搭配指定中間件,應(yīng)該要怎么配置呢(例如:如果我想給wx應(yīng)用下的AppController控制器配置AuthCheck中間件)
路由分組不支持給某個(gè)控制器設(shè)置中間件,路由里都是基于具體的控制器設(shè)置中間件的。
下次提問把版本都帶上,這樣能得到快速回復(fù),問題不清晰,版本不清晰的問題一般都不會(huì)被忽略掉,不回復(fù)