Я использую Slim Framework
v3 для PHP и здесь код я использую в классе, чтобы создать свой API:Слим Framework PHP - блокировать маршруты доступа пользователей в некоторых условиях
public function __construct() {
$this->slim = new \Slim\App;
$this->init();
$this->slim->run();
}
private function init() {
$this->slim->add(function ($request, $response, $next) {
// my code ...
return $response;
});
$this->slim->get('/getElements', array($this, 'getElements'));
$this->slim->get('/getElements2', array($this, 'getElements2'));
// and more...
}
public function getElements ($request, $response, $args) {
// my code ...
}
public function getElements2 ($request, $response, $args) {
// my code ...
}
В некоторых условиях мне нужно для ограничения доступа API к пользователям, поэтому в приведенном выше случае мне нужно вернуть response
с ошибкой при попытке доступа к маршрутам приложения. Таким образом, пользователи получат сообщение об ошибке при попытке доступа к getElements
, getElements2
и всем остальным маршрутам.
Я думал разместить код в init()
функции и заблокировать пользователя там, но какой код я могу использовать для этого?
Кроме того, еще один способ сделать это было бы, поставив код для каждого маршрута обратного вызова и делать что-то вроде этого:
public function getElements ($request, $response, $args) {
echo json_encode(array(
'error' => array(
'msg' => "MESSAGE...",
),
));
return $response;
// my code ...
}
, но у меня есть много маршрутов и предпочитают избегать этого.
Любая идея?
Редактировать: Я забыл упомянуть, что мне нужно получить доступ к объекту $request
, прежде чем принимать решение о том, должен ли пользователь быть заблокирован или нет.
Благодаря
Это одно из многих применений промежуточного программного обеспечения ... http://www.slimframework.com/docs/concepts/middleware.html – Devon