0

ログインフォームを手動で作成し、以下のようにセキュリティコントローラにクレデンシャルを設定しました

 public function loginCheckAction()
{
    $request = $this->getRequest();
    $session = $request->getSession();

            $oem = $this->getDoctrine()->getEntityManager();
            $username = $request->get('_username');
            $password = $request->get('_password');
            if($username){
                $user = $oem->getRepository('AdminEmployeeBundle:Employees')->loadUserByUsername($username);
                if($user){

                    $dbpassword = $password;
                    if($dbpassword == $user->getPassword()){
                        // secured and redirect
                    $token = new UsernamePasswordToken($user,null,'main',array('ROLE_ADMIN'));
                    // give it to the security context
                    $this->container->get('security.context')->setToken($token);
                    return $this->redirect($this->generateUrl('_employeeList'));    
                }
                    else{
                        $this->get('session')->setFlash('error','Please check username password');
                    }
                }
            return $this->redirect($this->generateUrl('login'));    
            }

今は従業員のコントローラーで使いたいのですが、使い方がわかりません

4

2 に答える 2

2

やってみました

$token = $this->get('security.context')->getToken();

?

于 2012-08-06T19:27:01.080 に答える
0

コントローラーを介してログインすると、従業員はROLE_ADMIN次の行のおかげでロールを持つ必要があります。

$token = new UsernamePasswordToken($user,null,'main',array('ROLE_ADMIN'));

これで、ファイアウォールの下にあるすべてのコントローラーを次のようにチェックインできます。

$this->get('security.context')->isGranted('ROLE_ADMIN');

ログに記録され、権限があるかどうかを確認するには

于 2012-08-07T21:48:51.340 に答える