2016-08-20 1 views
1

Я использую 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, прежде чем принимать решение о том, должен ли пользователь быть заблокирован или нет.

Благодаря

+0

Это одно из многих применений промежуточного программного обеспечения ... http://www.slimframework.com/docs/concepts/middleware.html – Devon

ответ

0

Я просто решаемые, делая это:

if (!$check) { 
    return $response->withStatus(403); 
} 

в моей $this->slim->add() функции.

 Смежные вопросы

  • Нет связанных вопросов^_^