amonger/firewall

v0.4.1 2015-09-02 10:41 UTC

This package is auto-updated.

Last update: 2024-09-12 22:54:23 UTC


README

构建状态 防火墙

这是一个简单的库,它将在匹配路由时执行一些操作。

它适用于一些遗留项目,在这些项目中,一些授权代码可能被多次粘贴到标题中,而没有底层结构。

示例

###单个路由### 您可以通过以下方式单独定义路由

use \amonger\Firewall\Firewall;

$firewall = new Firewall($_SERVER['REQUEST_URI']);

$firewall
    ->route('/managers\/.*/')
    ->unless(function ($uri) use ($container) {
       return $container['auth']->hasRole('manager');
    })
    ->handle(function () {
        throw new _401Exception();
    })
    ->execute();

###多个路由### 更可能的情况是您将有一个单个请求URI和多个您想要处理的路由。在这种情况下,您可以使用构建器来设置防火墙。

use \amonger\Firewall\Firewall;

$firewall = Firewall::getBuilder();
$firewall->setRequestUri($_SERVER['REQUEST_URI']);

$firewall
    ->route('/managers\/.*/')
    ->unless(function ($uri) use ($container) {
       return $container['auth']->hasRole('manager');
    })
    ->handle(function () {
        throw new _401Exception();
    });

$firewall
    ->route('/clients\/.*/')
    ->unless(function ($uri) use ($container) {
       return $container['auth']->hasRole('clients');
    })
    ->handle(function () {
        throw new _401Exception();
    });

Firewall::run($firewall);