認証機能を組み込むには

2007/03/30 | cakePHP

コントローラごとに認証機能を使うにはどうすればよいか。

それは意外と簡単だった。当該コントローラでbeforeFilterというメソッドを書いて、そこで権限があるかどうかチェックすればいい。beforeFilterはその名のとおり、そのコントローラを実行する際に、「事前に実行されるメソッド」だ(と思う)。ここでの権限チェックを通過しなかったら、ログイン画面を表示させるような処理をすればよい。

5件のコメント

  1. hoge :

    function beforeFilter(){
    // セッション確認のコード

    }

    というような感じで認証を試みているのですが、何かやたらと重くなります。
    どうやら上記のコードが問題らしいですが、
    beforeFilterメソッドって重くなるんでしょうか?

  2. かおるん :

    beforeFilter使ったことありますが、そんなに重かったっけかなぁ?。重い処理になってるかどうかはソースを読まないとわかんないのでなんとも・・・(今諸々忙しくて時間取れないのですよ)。
    どんなプログラムかいてます?。提示できますか?。他にボトルネックになりそうな部分ないですか?。

  3. hoge :

    重くなるアクションのみ掲示したいと思います。

    indexで名前とパスを入力して送信ボタンを押すとtopにいくという単純なものです。
    この送信ボタンを押すというアクションの際、beforeFilterメソッドを記述していると動作が重くなってしまいます。
    メソッド部分をコメントアウトすると通常動作を行います。

    ちなみにコントローラー内の
    function index(){
    }
    で、認証のソースを記述しておりますが、http://cakephp.jp/doc/
    に書かれているものとほぼ等しい処理を行っています。

  4. かおるん :

    ソースコードがないとなんとも・・・。
    多分ですけど、そもそもコントローラー内にbeforeFilter()関数は定義されています(こんなふうに)。
    function beforeFilter() {
    }
    つまり別途自分で作成したコントローラーにbeforeFilter()を定義しようがしまいがbeforeFilter()というのは呼ばれているのだと思いますよ。そうすると、beforeFilterを再定義したら遅くなる、というのであればbeforeFilter()内に記述されたスクリプトに原因があるような気もしますが。

    調べる時間を十分取れないので、あとはhttp://cakephp.jpで質問されたほうがよろしいかと・・・。

  5. seiryu :

    分かりました!
    色々調べてみようと思います。
    ありがとうございました!

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net