我想要一个Slim中间件来检查除某些特定请求(例如登录页面)之外的所有请求的身份验证。
我准备了第一个AuthenticationMiddleware
中间件来检查所有页面:
$app->add(new \App\Middleware\AuthenticationMiddleware($container));
然后我创建另一个AnonymousMiddleware
,它应该添加一个变量以将异常设置为身份验证检查:
$app->group('',function() use ($app){
$app->get('/','LogicController:index');
})->add(new AnonymousMiddleware($container));
问题是路由中间件(AnonymousMiddleware)在通用中间件(AuthenticationMiddleware)之后应用;
我尝试使用determineRouteBeforeAppMiddleware
,但不会改变结果。
我知道我会为所有经过身份验证的路由设置一个路由中间件,但是如果我忘记了它,那听起来有些危险,所以,我宁愿设置哪个路由器不在身份验证下,然后继续检查所有其他路由。
答案 0 :(得分:0)
您需要选择其他方法
您需要包装应“通过Auth中间件保护”的所有路由,并排除=不包装不应由该中间件处理的路由
您可以添加一个组,其中所有路由都将存在,并且只有登录(和注销)路由将不在该组中;)
类似
$app->group("/api/v1", function() {
// all your protected routes definitions here
})
->add(AuthenticationMiddleware::class)); // wrap by middleware
$app->post('/login', function(){});
$app->add(new MiddlewareForAllRoutes()); // middlewares for all routes