Мне нужно проверить, имеет ли пользователь в системе определенные роли в системе, поэтому я допускаю или не выполняю некоторые действия. Я использую JMSSecurityExtraBundle, и я проверяю документы для Expression Based Authorization, но я делаю что-то неправильно, так как код не работает. Посмотрите на этот код:Как проверить, имеет ли пользователь определенную роль и, следовательно, разрешить некоторые действия?
use JMS\SecurityExtraBundle\Annotation\Secure;
use JMS\SecurityExtraBundle\Security\Authorization\Expression\Expression;
if ($this->get('security.context')->isGranted(array(new Expression('hasRole("ROLE_ADMIN")')))) {
echo "Enter";
} else {
echo "Do not enter";
}
Но в любое время я авторизован даже ADMIN, которые имеют все права и ROLE_ADMIN, единственный текст, я вижу это «Не входить», который совершенно неправильно , В примере кода, описанном в here, автор использует $securityContext
var, но откуда он берется? Где этот var определен? Я предполагаю, что он укажет на SecurityContext, но я не так уверен, где проблема с моим кодом? Как проверить, имеет ли пользователь определенную роль и, следовательно, разрешить выполнение какого-либо кода или нет?
Почему бы вам просто не использовать '-> isGranted ('ROLE_ADMIN')'? –
Как это? Не могли бы вы написать небольшой кусок кода, чтобы понять это? – ReynierPM