0

symfony2 を使用してアプリケーションを開発しました。次の場合の symfony2 の preExecute() 関数の書き方を知りたいです。同じ画面からログアウトすると、ユーザープロファイルセクションにリダイレクトされます。セッションが強制終了され、ログイン画面にリダイレクトされますが、ブラウザの戻るボタンを押すと、プロファイル画面にリダイレクトされ、すべてのユーザー情報が表示されますが、同じ画面から次のプロセスをクリックすると、ログインページにリダイレクトされます。

この場合、symfony1.4 のような preExecute 関数を追加したいだけなので、セッションをチェックし、それが null の場合、システムからすでにログアウトしているときにブラウザの戻るボタンを押すと、ログイン ページにリダイレクトされます。

profileController.php ファイルに次のコードを追加しました。

public function indexAction() {
    $session = $this->get('request')->getSession();
    $userId = $session->get('id');

    if ($userId == 0 || $userId == '') {
        return $this->redirect($this->generateUrl('_security_login'));
    } else {
        //my code 
    }
}

//logout action
public function dologoutAction(){
   $this->get('security.context')->setToken(null);
   $this->get('request')->getSession()->invalidate();
   $this->container->get('request')->getSession('session')->clear();
   return $this->redirect($this->generateUrl('_security_login'));
}

このケースを処理する他の方法がある場合は、同じことを手伝ってください。ありがとうございました。

4

1 に答える 1

0

プロファイルアクションでロールを要求するだけROLE_USERで、ファイアウォールはログインフォームへのリダイレクトとその後のリダイレクトを行います。

/**
 * @Secure("ROLE_USER")
 */
public function profileAction()
{
    // ...
}

詳細については、Symfony ブックのセキュリティの章を参照してください。

于 2012-10-03T09:39:36.577 に答える