OAuth Token Middleware Slim версии 3 остановить или выйти

Я пытаюсь разработать простой метод аутентификации. Если у пользователя есть правильный токен доступа, приложение продолжит работу, в противном случае оно закроется с кодом состояния 401 (неавторизованным).

У меня есть что-то вроде этого:

api.php

...
$headers = getallheaders();
$auth = new OAuth2Auth($headers, $authconfig);
$app->add($auth, $dbconfig);

$app->post('/user', function($req, $res, $args) {
//MY CODE ONLY FOR LOGGED IN USERS
});

OAuth2Auth.php

public function __construct($headers, $dbconfig) {
$this->whiteList = array('\/auth');
$this->config = $dbconfig;
$this->headers = $headers;
}

public function __invoke($req, $res, $next) {
$authHeader = $this->headers['Authorization']; //grabbing the token
$auth = new AuthService($this->dbconfig);
$validated = $auth->verifyOAuth($authHeader); //Verifying Token against DB
if ($validated){
$response = $next($request, $response);
}else{
//EXIT, STOP or HALT
}
return $response;
}

Я пробовал многократное решение, чтобы избежать промежуточного программного обеспечения, чтобы продолжить его выполнение, но ничего не работает. приложение всегда выполняет то, что находится внутри $ app-> post (‘/ user’ …). Я нашел несколько решений для Slim v2, но пока ничего не подходит для Slim v3. Благодарю.

1

Решение

Кажется, что Slim v3 обрабатывает немного другое Middleware по сравнению с v2. Ответ состоял в том, чтобы создать мой собственный ответ $ как это:

public function __invoke($req, $res, $next) {
$authHeader = $this->headers['Authorization']; //grabbing the token
$auth = new AuthService($this->dbconfig);
$validated = $auth->verifyOAuth($authHeader); //Verifying Token against DB
if ($validated){
return $response = $next($request, $response)
->withStatus(200);//OK
}else{
return $response->withStatus(403);//Forbidden
}

}

Это помогло мне
Как использовать Middleware для управления потоком аутентификации

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector