2011/03/25CakePHP1.3でWebアプリケーションを構築する上で、Authコンポーネントを使った管理画面を作ってみます。前提として、adminコントローラ配下に認証をかけることにします。CakePHPで構築したサイト内で「http://xxx.xxx.xxx/admin」にアクセスするためには管理者権限を必要とするようにします。ユーザ管理テーブルを用意するユーザIDとパスワードを管理するテーブル「users」を用意します。NULL);最低限「ユーザID」と「パスワード」の2カラムを用意します。その他のカラムは任意です。カラム名は変更可能ですが、デフォルトの「username」「password」とします。今回は記述しませんが、カラム名を変更するためにはコントローラ内で設定が必要です。今回、このテーブルへのINSERTは手動で行います。パスワードはハッシュ値を登録します。ユーザ管理テーブルのモデルを用意する過去の記事にも書きましたが、このときモデル名は「User」になります。今回はモデルで特別な設定はしません。'User';}adminコントローラを用意するadminコントローラを用意します。略}}4、5行目でモデル「User」と組込みコンポーネント「Auth」を指定します。7行目beforeFilterで、adminコントローラのログイン画面を「login」、ログイン後のリダイレクト先画面を「index」、ログアウト画面を「logout」と指定します。21行目でadminコントローラ内でも「login」「logout」画面は認証の必要がないことを指定します。22行目ではログイン時に誤りがあった場合、23行目では未認証状態で管理画面にアクセスした場合のエラーメッセージを任意に変更しています。location.」となっています。ログイン画面を作るログイン画面は「http://xxx.xxx.xxx/admin/login」になります。認証前に他の画面にアクセスしても、このログイン画面にジャンプするようになります。ログイン画面はFormヘルパーで作ることもできるようですが、レイアウトの自由度を高めるためにも、今回は以下のように独自で記述します。$session->flash(‘auth’);」を記述します。2行目のように、アクション「login」でログイン処理を行う場合、フォームのactionに「login」を指定します。ユーザ名のnameを「data[User][username]」とします。後述しますが、このデータ構造で認証を実行するので、予め指定しておくことで認証処理をスムーズに行うことができます。同じ理由でパスワードも「data[User][password]」としたいのですが、なぜかこの型にするとパスワードがPOSTできないため、とりあえず「password」とします。ログイン処理アクション「login」にログイン処理を記述します。ログイン失敗}}}2行目は、ログインボタンが押され、postされた時にログイン処理を実行します。4行目は、先ほど述べたように「data[User][password]」としてpostデータを受けたいのですが、なぜかうまくいかないため、「$this->params[‘form’][‘password’]」として受けます。関数「$this->Auth->password」を使ってハッシュ値を得ます。7行目は、「data[User][username]」にユーザID、「data[User][password]」にパスワードをセットした状態で、関数「$this->Auth->login」を使って認証を試みます。これは、Authコンポーネントにより、ユーザ管理テーブルに問い合わせ、認証情報が正しいかどうかを判定します。認証が通った場合に自動的にクッキーに認証状態が保持されます。その後にアクション「index」にジャンプすると思っていたのですが。これもうまくいかないため、8行目にリダイレクトを記述します。これで、Authコンポーネントを使った認証のしくみは一通り構築できました。後は、例えばアクション「kanri1」「kanri2」「kanri3」といった具合にページを増やしていくことが可能です。これらのページには特別処理を記述する必要はなく、一度認証を通過してしまえば「http://xxx.xxx.xxx/admin/kanri1」というようにしてアクセス可能です。「logout」アクションにアクセスするまでは、管理者権限は保持されます。今回いくつか意図しない挙動が見られたので、もう少し調査、改良を試みたいと思います。リックテレコムプログラミングは全く初めての人、他の入門書で挫折しちゃった人、つまづく所はみんな同じです。そこを徹底分析したメソッドで、全員ゴールに辿り着ける入門教室が秋葉原にあります。1日でWeb画面と簡単なDBまで作れるようになるとってもユニークな速習コース。その方法を1冊に凝縮した本書なら、いきなりの初心者でも、無理せず楽しくPHPとMySQLのエッセンスを習得できます。ソーテック社FuelPHPでのフレームワーク開発を基礎から解説!役立つコアクラスとパッケージを徹底詳解!自由に使えるサンプルプログラムで実例をあげながら解説!Webアプリ開発の効率を大幅アップ!統合開発環境でOS問わず開発可能。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。inc.Profileサイト「helog」は私がWeb制作に携わるなかでの経験を中心に記しています。前にも発生したんだよなぁ。」といった無駄な時間を省くことを目的に書き始めました。「へ」の「ログ」です。個人的な技術メモのようなものですが、みなさんの何か役に立つことがあればこの上ないです。