Я использую https://github.com/tuupola/slim-jwt-auth slim middleware для аутентификации в приложении, над которым я работаю.У меня есть два промежуточных ПО, которые я использую для аутентификации на основе того, как осуществляется доступ к приложению.Я хочу запустить обе части на уровне приложения и на основе набора переменных после того, как промежуточное ПО определит, действительна ли аутентификация.
Так что-то вроде этого: (Middleware.php)
$container = $app->getContainer();
$userAuthMiddleware = new JwtAuthentication([
'cookie' => $container->get('settings')['JWT']['cookieName'],
'secret' => $container->get('settings')['JWT']['secret'],
'secure' => $container->get('settings')['JWT']['secure'],
'algorithm' => [JWT::HASH_ALGORITHM],
'path' => ['/'],
'passthrough' => [
'/users/login',
'/users/logout',
'/users/reset-request',
'/users/reset-password',
'/leads/super'
],
'relaxed' => ['localhost'],
'error' => function(Request $request, Response $response, array $params) use ($container) {
//Handle error here
},
'callback' => function(Request $request, Response $response, array $params) use ($container) {
// attach the decoded token to the container
$container['jwt'] = $params['decoded'];
$container['user'] = UserHelper::getUser($container['jwt']->id, DaoFactory::getInstance()->user());
}
]);
// This should be the final piece of middleware that check if authentication is valid
$authMiddleware = function($request, $response, $next) use ($container) {
// $container['accessToken'] is in a 'AccessPoint' class
if (!isset($container['user']) && !isset($container['accessToken']))
return $response->withStatus(401)->withJson(GeneralErrors::response(GeneralErrors::UNAUTHORIZED));
};
$app->add($authMiddleware)
->add($userAuthMiddleware)
->add(new \MyApp\Middleware\AccessPointMiddleware());
Моя проблема здесь в том, что JwtAuthentication
вернет 401, если jwt недействителен без вызова следующей части промежуточного программного обеспечения.Я не могу найти способ вызвать следующий кусок промежуточного программного обеспечения $authMiddleware
погода или нет JWT является действительным.