Silex 安全配置

Silex security configuration

我正在为 silex 安全问题苦苦挣扎:

我有以下内容:

$app->register(new Silex\Provider\SecurityServiceProvider());

以后:

$app['security.firewalls'] = array(
    'admin' => array(
        'pattern' => '^/admin',
        'http' => true,
        'users' => array(
            // raw password is foo
            'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
        ),
    ),
);

但是当我点击路径时 "localhost/admin" 我得到:

Found error: No route found for "GET /admin"

无法理解 silex rly 页面上的文档。我应该向控制器注册安全过滤器吗?

我在控制器中定义如下函数:

public function admin(){
        return 'Hello';
    }

路线是:

$app->get('/admin', 'app.vendor_controller:admin');

现在我得到:

Hello

我一点击路径 /admin ,就没有身份验证表单。所以没有包含身份验证过程...

编辑~~~~~~~~~~~~~~~~~~~~~

好的,所以现在在点击 url/admin 之后,我得到了带有要放置的字段的身份验证横幅,作为用户和密码,我正在输入 admin 和 foo,但对此没有任何影响。

`A username and password are being requested by http://localhost:8080. The site says: “Secured”`

代码如下所示:

$app['security.firewalls'] = array(
    'admin' => array(
        'pattern' => '/admin',
        'http' => true,
        'users' => array(
            'admin' => array('ROLE_ADMIN', 'foo')
        )));
$app['security.access_rules'] = array(
    array('/admin', 'ROLE_ADMIN'),
);

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
    'pattern' => '/admin',
    'http' => true,
    'users' => array(
        // raw password is foo
        'admin' => array('ROLE_ADMIN', 'foo'),
    ))));

您配置了匹配每个 /admin* url 的防火墙,但这并不意味着每个 URL 都需要身份验证。你可以成为 anonymous user,这很好。如果你想告诉 silex "the user need the ROLE_ADMIN to be allowed here",你需要添加

$app['security.access_rules'] = array(
    array('^/admin', 'ROLE_ADMIN'),
);