CakePHPでBasic認証対応ページを作る
2008.07.30 / php
1.2だとBasic認証対応ページを作るのも超簡単です。
対応させたいControllerにSecurityコンポーネントを適用
まずSecurityコンポーネントを利用します。
class HogeController extends AppController { var $name = 'Hoge'; var $uses = array('Hoge'); var $components = array('Security'); ... }
認証情報を追加
beforeFilterに認証に必要な情報を追加します。
function beforeFilter(){ parent :: beforeFilter(); $this->Security->loginOptions = array('type'=>'basic'); $this->Security->loginUsers = array('katsuma'=>'katsukatsu'); $this->Security->requireLogin('*'); }
ここではUser:katsuma, Pass:katsukatsuの認証情報で、全アクションで認証を必要とさせています。認証を特定のアクションのみに限定させたいときは、requireLoginメソッドで、認証を実行するアクション名のリストを指定します。基本的には必要なことはこれだけです。簡単!
Formは要注意
一点、要注意な事項としてFormを必要とするView、たとえば何らかのPostを実行するようなFormのViewがあるときに、そのFormを構成する要素はすべてFormヘルパを利用する必要があるということです。
inputタグなんかの要素はもちろん、たとえばformタグを書き出すときも
<form action="/Hoge/add"
とかじゃダメで、
<?php e($form->create('Hoge', array('action'=>'add')))?>
じゃなければダメです。(こうしないと認証がかからない)
これはどうもヘルパを利用すると、Tokenのようなものを全要素に対して自動的に追加して、このTokenがちゃんと追加されていないとSecurityコンポーネントが働かないようです。「formタグくらいどうでもいいだろー」とタカをくくってて、痛い目にあったので皆さんもご注意ください。。