我在与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"不懂西里克斯网页上的文档。我应该向控制器注册安全过滤器吗?
in在控制器中定义如下功能:
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'),
))));发布于 2016-11-17 10:23:42
您配置了一个与每个/admin* URL匹配的防火墙,但这并不意味着每个URL都需要身份验证。你可以成为一个匿名用户,这是很好的。如果您想告诉silex“用户需要在这里允许使用ROLE_ADMIN”,则需要添加
$app['security.access_rules'] = array(
array('^/admin', 'ROLE_ADMIN'),
);https://stackoverflow.com/questions/40651436
复制相似问题