CakePHP2.xで、Authコンポーネントを使って簡単認証する方法

CakePHP
記事内に広告が含まれています。

CakePHP2.x(2.3.6)でAuthコンポーネントを使い、認証させる方法をポストします。
以前紹介した、CakePHP2.x及びDebugKitのインストールとともに初期状態をさくっと作るための忘備録です。

セッションの設定

ログイン関連にはセッションを使用するので、セッション関係の設定を行います。
app/Config/core.php の190行目付近変更します。

いくつか前のポストにもあるように単位が「秒」ではなく「分」だという事に注意して設定します。1440(分)は1日(24時間の分数)という意味です。

また、デフォルトではPHPに保存するところを「セッションの保存先を、データベースにするよ」という設定を行います。

編集前

 

編集後

 

必要なテーブルの作成

次にセッションをデータベースに保存するって設定を行ったので、それに関するテーブルをSQLで作成します。

1.セッション保存用テーブル

 

2.ユーザ用テーブル

次にユーザ用テーブル。
Authコンポーネントでは、『id』『username』『password』が最低限必要なカラムとなるので、それらを含んだテーブルを作成します。

 

コントローラー作成

コントローラーを作っていきます。
全部載せるのはちと面倒なので、重要なところだけ。

AppController

基底ファイルである AppController にコンポーネント設定を書き、全てのページに反映させます。
beforeFilter() にある

$this->set(‘userinfo’, $this->Auth->user());

にて、ログイン中のユーザ情報を取得、セットするようにしています。

app/Controller/AppController.php

ハイライトされているところが、Authコンポーネント設定です。

 

(2014.02.19追記)

下で説明している「Adminルーティング」を使用し、管理者用ログイン画面のURLを

http://yourdomein.com/admin/users/login

としたい場合は、Appコントローラーのコンポーネント設定の「ログインページのパス」へ

を設定するとうまくいくようです。

更に追記

(1)削除済みのユーザに関してはログインさせたくない等の条件
(2)デフォルトではusername と passwordの判定だが、メールアドレスにて判定したい
の条件が必要になった場合は、下記の設定を追加すると幸せになれます。

(追記ここまで)

 

UsersController

とりあえず、beforeFilter()、admin_login()、admin_logout()だけ。

“admin_”はプレフィックスを付けて管理画面とする、Adminルーティングてやつです。
詳しくは以前のポスト(CakePHP2.x で Admin Routing する方法。)を参照してください。

コントローラー内では特に目新しいことはしていません。

CakePHPの仕様で、AppControllerで beforeFilter() を指定している場合は、各コントローラーでも beforeFilter() が必要になるので、そのようにしています。

ログイン、ログアウトは非常に簡潔なルーチンで作成可能です。
お手軽ですね。

略していますが、これ以外のアクションとしては(ごく普通に)ユーザの一覧、追加、修正、削除、インデックスページなどがあると思うので、それぞれ作成してください。

編集ファイル: app/Controller/UsersController.php

 

ビューの作成

あとは必要なビューとモデルを適切に作っていけば出来上がります。

新規ユーザ登録フォーム

このページは、ユーザが居ない初期状態の場合は認証なしで表示するよう、UsersController の beforeFilter() で設定しています。

編集ファイル: app/View/Users/admin_add.ctp

 

ログインフォーム

編集ファイル:app/View/Users/admin_login.ctp

 

ログアウト後ページ

編集ファイル:app/View/Users/admin_logout.ctp

 

indexページ

必要かどうかは分かりませんが、ログインしている人の情報を表示するページとします。

編集ファイル:app/View/Users/admin_index.ctp

 

モデルの作成

最後に、ユーザ登録時のバリデーションを行うモデルを作成します。

編集ファイル:app/Model/User.php

 

以上で最低限ユーザ認証させるページが出来上がりました。

スクリーンショット

以下は、順を追ったスクリーンショットです。

1. 初期ユーザを登録

/admin/users/add で、初期ユーザを登録します。

AuthComponent画面1

2. ログイン画面

admin/users/login

AuthComponent画面2

3. ログイン後画面(INDEX)

ログイン後は、インデックスページヘリダイレクトするようにしたので、インデックスページを表示します。

AuthComponent画面3

ログアウト後は、ログインページが表示されるはずです。

 

と、かなり早足でしたが、Authコンポーネントを用いた、認証システムの作成方法でした。

 

関連するかもしれないポスト

 

CakePHP
スポンサーリンク
シェアする
toogieをフォローする
タイトルとURLをコピーしました