スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アクセス制御について

管理画面、マイページなどのように認証されたユーザで
特定の権限を持つユーザだけが閲覧や操作を行えるようにする。
symfonyは、アクセスしているユーザに関する情報は
ユーザークラス($this->getUser())が持っている。

symfonyは、user制御をデフォルトで持っている関係で
変数名でuserという名前は、使わないほうがよい。


以下のものがある。

・認証済みにする     $this->getUser()->setAuthenticated(true);
・未認証済みにする     $this->getUser()->setAuthenticated(false);
・認証済みかどうか     $this->getUser()->isAuthenticated();
・権限を追加する     $this->getUser()->addCredential("member");
                                  ()内の値は任意。
・権限を持つかどうか     $this->getUser()->hasCredential("member");
・権限を削除     $this->getUser()->removeCredential("member");
・全権限を削除     $this->getUser()->clearCredentials();

[使用例]
・member_idという名前でセッションに値を持たせる
    $this->getUser()->setAttribute('member_id', $member->getId(),sfConfig::get('sf_session_name'));
・セッションの値を取得    
    $this->getUser()->getAttribute('member_id');
・member_idというセッションを削除する。
$this -> getUser() -> getAttributeHolder() -> remove('member_id');

テンプレート側でユーザ情報やセッション情報を参照するためには、
以下のようにする。
    $sf_user->(メソッド名);

    以下でもよい。
    sfContext::getInstance()->getUser()->(メソッド名);

[記述例]
$sf_user->isAuthenticated();
sfContext::getInstance()->getUser()->isAuthenticated();

symfonyの場合、session_startの必要がない。
sf_session_nameを記述した時点で発行されていると理解してよい。


使用するためには、(プロジェクト名)/(アプリケーション名)/config内の
security.ymのis_secureをonにする。
default:
  is_secure: on

default:の部分をアクション名にすると、
そのアクション名にしか作用しない。

この設定は、security.ymlの設置してあるconfigフォルダが存在する
同一レベルの内容に作用する。このあたりをしっかり設定しないと、
意図した画面にたどり着けないという現象が発生するので、
注意すること。





スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。