2017-10-20 8 views
1

私のウェブサイトでは、ボタンをクリックして自分の役割を変更する権限を一部のユーザーに与えたいと考えています。私は次のように実装しました:変更後のアクセス禁止のユーザーロール

$post = Request::createFromGlobals(); 
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){ 
     $em = $this->getDoctrine()->getManager(); 
     $user->setRoles(array('ROLE_MEDIA')); 
     $em->flush(); 
} 

データベースをチェックした後、正常に動作していて、問題なくメインコントローラで回復できます。問題は次のとおりです。ボタンをクリックしてROLE_MEDIAを持つユーザーに制限付きページにアクセスした後、403エラーが発生します。 Symfonyは新しいユーザロールを検出しないようです。おかげで事前

+1

は、あなたが解決策を見つけるかどうかをチェックしてみてください[ここ](https://github.com/symfony/symfony/issues/12025) –

+0

あなたがログアウトした後、それは動作しませんログインし直してください。 – dmnptr

+0

あなたは@ VitaliyRyaboyを提供してくれてありがとう!私はそこに解決策を見つけることができた、あなたの助けに感謝 –

答えて

0

に、私は最も簡単な解決策ことが判明...私は私のコントローラで右の値にアクセスすることができますので、私は問題を理解していない

/** 
* 
* @Security("has_role('ROLE_MEDIA')") 
*/ 

:私は、次のコードを使用していくつかのページを制限していますセッションIDを再生成することによって、セッションをリフレッシュすることです:

$post = Request::createFromGlobals(); 
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){ 
     $em = $this->getDoctrine()->getManager(); 
     $user->setRoles(array('ROLE_MEDIA')); 
     $em->flush(); 
     $this->get('session')->migrate(); 
} 
関連する問題