Slim Framework PHP - 在某些条件下阻止对用户的访问路由

时间:2016-08-20 14:15:37

标签: php slim

我在PHP中使用Slim Framework v3,这是我在类中用来创建API的代码:

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。 因此,用户在尝试访问getElementsgetElements2和所有其他路由时都会收到错误。

我一直在考虑在init()函数中添加一些代码并在那里阻止用户,但我可以使用哪些代码来执行此操作?

另外,另一种方法是为每个路由回调放置一些代码并执行以下操作:

public function getElements ( $request, $response, $args ) {
   echo json_encode(array(
      'error' => array(
         'msg' => "MESSAGE...",
      ),
   ));
   return $response;

   // my code ...
}

但我有很多路线,宁愿避免这种情况。

有什么想法吗?

编辑:在决定是否应阻止用户之前,我忘记提及我需要访问$request对象。

由于

1 个答案:

答案 0 :(得分:0)

我刚刚解决了这个问题:

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

在我的$this->slim->add()函数中。