Slim身份验证中间件,用于除某人以外的所有路由

时间:2019-06-17 10:45:38

标签: php authentication middleware slim-3

我想要一个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,但不会改变结果。

我知道我会为所有经过身份验证的路由设置一个路由中间件,但是如果我忘记了它,那听起来有些危险,所以,我宁愿设置哪个路由器不在身份验证下,然后继续检查所有其他路由。

1 个答案:

答案 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