CakePHP には、ACL という認証システムが標準で入っています。しかし、ログイン画面やアクセスチェックなどは自前で用意する必要がありますし、データベースでユーザと権限を管理するなど、かなり本格的なものです。
自分が今、作成しているアプリケーションは、少人数(または一人)で管理できればいいものなので、単純にパスワード一つを登録できて、それで全体の認証チェックをしてくれればよい、という程度のものです。
そこで簡単なスクリプトを書いてスニペットに登録してみました。
データベースを使わず、ユーザ名とパスワード一つでアプリケーション全体を守るタイプのものです。ソースを見れば一目瞭然なコードです。
http://cakeforge.org/snippet/detail.php?type=package&id=20
関心を持ってくれたShane Shepherd さんが、CAKE_ADMIN ルーティングの場合にはどうできるか、というアイデアを出してくれました。
http://www.shepherdweb.com/2006/07/14/single-user-admin-area-authentication-with-cakephp/
これを使えば、アプリ名/admin/コントローラ/アクション というadmin専用の形での認証に使えます。
自分でも必要になったのでちょっと調べてみたところ、こういう書き方もできるかな、と思いました。
class AppController extends Controller {
var $components = array(’SdAuth’);
function beforeFilter()
{
//for CAKE_ADMIN(admin) rooting.
if(defined(’CAKE_ADMIN’) && !empty($this->params[’admin’])){
//start admin check.
if($this->SdAuth->isloggedin() == FALSE)
{
//$this->layout = “login”;
***$this->layout = '';
***$this->render('../layouts/login');
***exit();
*など。pm11opさん、ありがとうございます。*
*http://pm.11op.net/2007/12/post-28.php*
} else {
$this->layout = “admin_default”;
}
}
これだと、/admin/ を間にはさんでアクセスした場合にのみ、認証チェックをかけてくれます。
2006年07月17日
この記事へのコメント
コメントを書く
この記事へのトラックバック
「いちばん簡単な認証システム」が安全ではない件
Excerpt: 最初に断っておきますが、 いつも参考にしてる CakePHP のおいしい食べ方の...
Weblog: pm11op のブログ
Tracked: 2007-12-18 02:11




