ようこそゲストさん

CPA-LABテクニカル

メッセージ欄

分類 【Cake1.2 AuthComponent】 で検索

一覧で表示する

2008/03/07(金) AuthComponentで認証除外アクションの指定の仕方

CakePHP1.2bのAuthコンポーネントは、デフォルトのままだとコンポーネントを使うコントローラーのactionすべてに認証が必要になってしまう。
でも、特定のアクションだけは認証なくてもアクセスしてもいい設定にしたいもの。
それも簡単にできるようになっている。
必ず、beforeFilter()メソッドにて、以下のallowedActionsの設定をする。

続きを読む

2008/02/09(土) AuthComponentのパスワード暗号化。登録注意点。CakePHP1.2b

CakePHP1.2bのAuthコンポーネントは、なるほど便利なのだけれど、一番最初に自分のパスワードをデータベースに設定するところでつまずいたので覚書。


まず結論。
Authコンポーネント準備段階ではコンポーネントを読み込むと何かと設定が必要になってしまうので、まずは、以下で、管理者用パスワードを算出して、自力でデータベースのテーブルに登録する。
App::import('Component', 'Auth');
echo AuthComponent::password( 'パスワード' );

上記の結論に至った理由など


passwordの算出の仕方*1
DB格納値 =  sha1( sha1( 'Security.saltの値') . ' パスワード ' );

AuthComponentは、インストール時に設定した*2Security.saltの値、すなわち
  • /cake/app/configure/core.phpの
Configure::write( ' Security.salt ', ' てきとうな値 ');
を使って、暗号化のキーとしている。
このsalt*3を暗号化した上で、入力されたパスワードを文字列で連結し、それをSHA1でさらにハッシュ化している。
なので、開発時や一番最初にスーパーユーザーを登録する時には、パスワードを上記の式で求めて、手動で設定しておかなければならない。


また、AuthConponent自体には、ユーザー登録の機能はないので(たぶん)、自分で実装するしかないが、その際には上記算出を使わず、Authコンポーネントのメンバ関数を使ったほうが、今後のためにはよいと思われる。(もちろん、最初のユーザーを手動登録する際も、一番最初の式を使わなくても、AuthComponentを読み込んでおいて、以下の式で求めればよい)

DB格納値 = $this->Auth->password( ' パスワードテキスト ' );
(var $useComponents=array( 'Auth' ) は必要かな。)

もちろん、運用後にSecurity.saltを変更してしまうと、全員のパスワード再登録、という恐ろしい事態が待っているので、必ずインストール時に適切なSecurity.saltを設定しておくことが必要。


ちなみに私のSecurity.saltは自分の好きな詞をハッシュ化したものを使っています。


CakePHP version 1.2.0.6311 beta

*1 : 後述の方法でもよい

*2 : デフォルトのままは好ましくないので、自分の好きな値に変えましょう

*3 : なるほど、だからsalt(塩)というネーミングなのね

1: いけみん 『cakephpのハッシュ方法がわからずハマっていたので、大変参考になりました。ありがとうございます。』 (2012/02/12 19:11)

  • AuthComponentの使い方 CPA-LABテクニカル spok
    基本的な使い方:CakePHP1.2 AuthComponentで会員登録サイトを作る [1]Authコンポーネントとは会員制サイトや管理人用として、認証を利用したいときに使用する特徴パスワードはハッシュにて不可逆暗号化される。CakePHPの暗号化ハッシ...
  • [CakePHP]AuthComponentのパスワード暗号化を無効にする方法 Writing Some Code
    1.2系で追加されたAuthComponentは、認証関連の処理を一手に担ってくれる強力なコンポーネントですが、 AuthComponentのパスワード暗号化。登録注意点。CakePHP1.2b - CPA-LABテクニカル 【CakePHP】AuthC...

2008/02/08(金) AuthComponentの使い方

基本的な使い方:CakePHP1.2 AuthComponentで会員登録サイトを作る [1]

Authコンポーネントとは

会員制サイトや管理人用として、認証を利用したいときに使用する

特徴

パスワードはハッシュにて不可逆暗号化される。CakePHPの暗号化ハッシュデフォルトは、SAH1
デフォルトでは、usernameとpasswordだけの認証だが、独自のルールを設定できる。
(例)アクティブユーザーか否かのフィールド is_active=1 のユーザーであれば、認証する、みたいな。
(例)ユーザーの権限によって、そのアクセスするページ(アクション)は、mangerクラスでないと見られない。→ フィールド class = maneger の人だけ認証する、みたいな。

必要なもの

usersテーブルに、「id」「username]「password」フィールドを設定する。
(いずれも名前は変更可能。上記の独自ルールを設定したい人は、そのためのフィールドを設定する。)
model不要
認証が必要なコントローラーのクラスで、authコンポーネントを読み込む
var $components=array('Auth');

最初のスーパー管理者用パスワードはどうやって設定する?


AuthComponentのパスワード暗号化。登録注意点。CakePHP1.2bを参照。


主なデフォルト設定

いずれも変更可能。

メンバ変数何者?デフォルト値
$allowedActions(array)要認証コントローラーの中でも、認証が必要ないアクションのリストarray()
$loginActionログインアクション名:login
$userMOdelモデル名User
$fieldsフィールド名(array)username,password
$autoRedirectログイン後元のページに戻る(リダイレクト)true(yes)
loginRedirect元のページがない場合のリダイレクトページnull


3つ以上の組み合わせも、追加的条件を組み合わせて出来るが、ハッシュで暗号化されるのは、passwordのみ。