用于除 someone 之外的所有路由的 Slim 身份验证中间件
Slim Authentication middleware for all routes except someone
我想要一个 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
但它并没有改变结果。
我知道我会为所有经过身份验证的路由设置一个路由中间件,但如果我忘记它听起来有点危险,所以,我更愿意设置哪个路由器不在身份验证下,然后继续检查所有其他路由。
你需要选择不同的方法
你需要包装所有应该是 "protected via Auth middleware" 的路由并且排除 = 不包装不应由该中间件处理的路由
您可以添加一个组,您的所有路由都将存在于该组中,并且只有登录(和注销)路由会在该组之外;)
类似
$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
我想要一个 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
但它并没有改变结果。
我知道我会为所有经过身份验证的路由设置一个路由中间件,但如果我忘记它听起来有点危险,所以,我更愿意设置哪个路由器不在身份验证下,然后继续检查所有其他路由。
你需要选择不同的方法
你需要包装所有应该是 "protected via Auth middleware" 的路由并且排除 = 不包装不应由该中间件处理的路由
您可以添加一个组,您的所有路由都将存在于该组中,并且只有登录(和注销)路由会在该组之外;)
类似
$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