부싯돌에 문제가 있습니다. 왜 그가 테스트 ROLE에 TRUE를 반환하지 않는지 이해할 수 없습니다. 현재 사용자가 $ username 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 :
$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