我有一個燧石問題,我不明白他爲什麼從來沒有返回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