【发布时间】:2016-09-29 15:53:08
【问题描述】:
我对燧石有问题,我不明白为什么他从不将 TRUE 我返回到测试角色。 我当前的用户是一个显示 $ username isGranted 但只返回 FALSE 的节目。
你有什么想法吗?
$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($user) 返回:
object(Symfony\Component\Security\Core\User\User)#255 (7) {
["username":"Symfony\Component\Security\Core\User\User":private]=>
string(23) "test@test.com"
["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";}"
}
}
谢谢
【问题讨论】:
-
您能分享一下您的防火墙配置和访问规则吗?
-
嗨!我刚刚编辑了我的第一篇文章
-
你可以尝试添加一些access rules吗?
-
通过添加我仍然卡住的规则,它返回我没有访问权限。