我有一个燧石问题,我不明白他为什么从来没有返回TRUE我的测试角色。 我目前的用户是一个显示$用户名isGranted但返回我只FALSE。测试角色silex
你有什么想法吗?
$token = $app['security.token_storage']->getToken();
$user = $token->getUser();
echo $username = $user->getUsername(); // Good return !!
if ($app['security.authorization_checker']->isGranted('ROLE_USER'))
echo 'Never return also my user is ROLE_USER';
else
echo 'always return';
PS:我的用户是通过Symfony的产生
我的防火墙的Silex:
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'main' => array(
'pattern' => '^/',
'guard' => array(
'authenticators' => array(
'api.token_authenticator'
),
),
'users' => function() use ($app) {
return new UserProvider($app['db']);
},
'anonymous' => true,
),
),
'security.role_hierarchy' => array(
'ROLE_USER' => array(),
'ROLE_ADMIN' => array('ROLE_USER'),
'ROLE_SUPER_ADMIN' => array('ROLE_USER','ROLE_ADMIN','ROLE_ALLOWED_TO_SWITCH'),
),
));
的var_dump($用户)的回报:
object(Symfony\Component\Security\Core\User\User)#255 (7) {
["username":"Symfony\Component\Security\Core\User\User":private]=>
string(23) "[email protected]"
["password":"Symfony\Component\Security\Core\User\User":private]=>
string(60) "$2y$13$8sv57a29wd9Xg0gc0o0ckOP3.pN9g2ZOuAwaldRdrPOk.XA9Dp8m"
["enabled":"Symfony\Component\Security\Core\User\User":private]=>
bool(true)
["accountNonExpired":"Symfony\Component\Security\Core\User\User":private]=>
bool(true)
["credentialsNonExpired":"Symfony\Component\Security\Core\User\User":private]=>
bool(true)
["accountNonLocked":"Symfony\Component\Security\Core\User\User":private]=>
bool(true)
["roles":"Symfony\Component\Security\Core\User\User":private]=>
array(1) {
[0]=>
string(34) "a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}"
}
}
感谢的
您可以分享您的防火墙配置和访问规则吗? – mTorres
嗨!我只是编辑我的第一篇文章 – Corgato
你可以尝试添加一些[访问规则](http://silex.sensiolabs.org/doc/providers/security.html#defining-access-rules)吗? – mTorres