認証機能を組み込むには
2007/03/30 | cakePHP
コントローラごとに認証機能を使うにはどうすればよいか。
それは意外と簡単だった。当該コントローラでbeforeFilterというメソッドを書いて、そこで権限があるかどうかチェックすればいい。beforeFilterはその名のとおり、そのコントローラを実行する際に、「事前に実行されるメソッド」だ(と思う)。ここでの権限チェックを通過しなかったら、ログイン画面を表示させるような処理をすればよい。
コントローラごとに認証機能を使うにはどうすればよいか。
それは意外と簡単だった。当該コントローラでbeforeFilterというメソッドを書いて、そこで権限があるかどうかチェックすればいい。beforeFilterはその名のとおり、そのコントローラを実行する際に、「事前に実行されるメソッド」だ(と思う)。ここでの権限チェックを通過しなかったら、ログイン画面を表示させるような処理をすればよい。
2007/06/16 at 3:23 AM
function beforeFilter(){
// セッション確認のコード
}
というような感じで認証を試みているのですが、何かやたらと重くなります。
どうやら上記のコードが問題らしいですが、
beforeFilterメソッドって重くなるんでしょうか?
2007/06/16 at 11:48 PM
beforeFilter使ったことありますが、そんなに重かったっけかなぁ?。重い処理になってるかどうかはソースを読まないとわかんないのでなんとも・・・(今諸々忙しくて時間取れないのですよ)。
どんなプログラムかいてます?。提示できますか?。他にボトルネックになりそうな部分ないですか?。
2007/06/17 at 4:48 AM
重くなるアクションのみ掲示したいと思います。
indexで名前とパスを入力して送信ボタンを押すとtopにいくという単純なものです。
この送信ボタンを押すというアクションの際、beforeFilterメソッドを記述していると動作が重くなってしまいます。
メソッド部分をコメントアウトすると通常動作を行います。
ちなみにコントローラー内の
function index(){
}
で、認証のソースを記述しておりますが、http://cakephp.jp/doc/
に書かれているものとほぼ等しい処理を行っています。
2007/06/17 at 11:47 AM
ソースコードがないとなんとも・・・。
多分ですけど、そもそもコントローラー内にbeforeFilter()関数は定義されています(こんなふうに)。
function beforeFilter() {
}
つまり別途自分で作成したコントローラーにbeforeFilter()を定義しようがしまいがbeforeFilter()というのは呼ばれているのだと思いますよ。そうすると、beforeFilterを再定義したら遅くなる、というのであればbeforeFilter()内に記述されたスクリプトに原因があるような気もしますが。
調べる時間を十分取れないので、あとはhttp://cakephp.jpで質問されたほうがよろしいかと・・・。
2007/06/17 at 3:37 PM
分かりました!
色々調べてみようと思います。
ありがとうございました!