부여되어 있는지 확인 할 수 없습니다, 그래서 나는 로그인 성공이 기능을 서비스 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
. I가 로그인하고있어 일단 내가 할 수 있어야 :
{% 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은 사용자 및 역할을 데이터베이스 (또는 공급자가 무엇이든간에)에서 다시로드합니다. –