2006年07月17日

いちばん簡単な認証システム

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/ を間にはさんでアクセスした場合にのみ、認証チェックをかけてくれます。


posted by SDozono at 14:38| ロサンゼルス 🌁| Comment(0) | TrackBack(1) | CakePHP Controller | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。