我一直當他登錄的動態角色設置爲用戶,所以我創建了一個服務LoginSuccessHanlder
與成功登錄該功能:不能檢查,如果一個角色被授予
public function onAuthenticationSuccess(Request $request, TokenInterface $token) {
$response = null;
$user = $this->token->getToken()->getUser();
$poste = $request->get('_poste');
$user->addRole('ROLE_'.strtoupper($poste));
$this->em->persist($user);
$this->em->flush();
if ($this->authorizationChecker->isGranted('ROLE_USER')) {
$response = new RedirectResponse($this->router->generate('homepage'));
$response->headers->setCookie(new Cookie('poste', $poste));
}
return $response;
}
所以在這裏,我通過登錄表單_poste
中的字段向用戶添加新角色。一旦我參與的登錄我應該能夠做到:
{% if is_granted("ROLE_FLEX") %}
message
{% endif %}
但沒有消息
但是,如果我這樣做:
{{ dump(app.user.roles) }}
我有陣列的作用ROLE_FLEX
,爲什麼我不能用is_granted
函數檢查角色?我錯過了什麼?
有關信息,我使用FOSUserBundle
編輯
我刪除的角色,每次用戶註銷,所以當他註銷用戶不具備ROLE_FLEX
了,但作用會如果他在檢查日誌上這個角色添加基本上用戶必須爲每個會話
你可以顯示'addRole'函數代碼嗎? –
@ i.am.michiel'addRole'函數由FOSUserBundle –
提供角色是否存在?在每個請求中,FOSUserBundle都會從數據庫(或任何您的提供者)重新加載用戶和角色。 –