SSブログ

Auth のあれこれ [cakePHP]

cakePHP1.3
Auth コンポーネントでいろいろハマッた。

どこでどうハマったかというと、
Auth のモデルを「User」以外のモノにする場合。

Authコンポーネントを使って、ACLを使わずに、
管理者とユーザーを使い分けた。

これが出来るのは、
管理者ページとユーザーページが完全に切り分けられているからで、
お客向けページの時にはAuthでつかうモデルをCustomerとし、
管理者向けページの時にはモデルをAdminにするみたいな感じ。

つまり、

お客向けページ:
$this->Auth->userModel = "Customer";

管理者向けページ:
$this->Auth->userModel = "Admin";

をそれぞれ
function beforeFilter(){
}
に書いておく事でOK。



のはずだったんだが、なんか上手く行かなくて。
Adminが実は予約語なんじゃないか?と疑ってみたり、
POSTした情報をアクション内でdumpしたら、passwordがnullになってて、
これが原因で認証されないのか?!などと疑ってみたが、Authのメソッド読んでもピント来ず。
よくよく考えたらこれはセキュリティーをふまえたAuthの仕様では?と気づいてみたり。。。

最終的に、原因は?? 

モデルの頭文字は必ず大文字で!
とか、そういう事だったりする。多分(T_T)

$this->Auth->userModel = "admin";
こうなったり
$this->Auth->userModel = "Admins";
こうなったりしてたんだね。

モデルは「s」とか大文字とかごっちゃになるが、
しかし、そこ間違えててもAuthのばあいエラーにならないみたいなんですよね。多分(T_T)

正直、いろいろやり過ぎて、
最終的にこれが原因だったのかどうか?自分でもよくわからない。




あとは、Authはハッシュに関して。

Security::hash()

ってのが有るが、これで作ったハッシュと、

$this->Auth->pasword()

で作ったハッシュは別物になるらしい。

ユーザー登録の時、メール認証などをかましてやる時に、
新規ユーザー登録のページに関しては認証掛ける必要も無いし、、
Authコンポーネントを読み込んでなかったので、
代わりに前者のSecurityクラスを使ったわけだが、それが失敗。


当然といえば当然なのかも?
だけど両方とも「sha1」でのハッシュ化だから同じになると思ったんだけどなぁ。
ちょっと違うんだろうな。。。
覚えとかなきゃ。


今回のお仕事でハマりそうなのはあと1〜2ヶ所。
そっちは javascriptとPHPの絡み。

早くこういうハマりポイント抜け出して、デザインの方やりたいわ。。





nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。