メイン helper,component,script
モデルをまたがった Auth 認証の継続 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| kanbe | 投稿日時: 2008-8-8 1:14 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-17 居住地: 投稿: 40 |
モデルをまたがった Auth 認証の継続 現在、CakePHP 1.2 RC2 を使ってソーシャルブックマークのようなものをつくろうとしています。認証には Auth コンポーネントを使い、認証の取り回しは http://example.com/users/ 以下のメソッドならば問題ありません。
しかし、ソーシャルブックマークの登録ページ、例えば http://example.com/urls/add などに Bookmarklet 経由でアクセスさせるときに、ログインしていなければユーザ認証画面に飛ばすようにすると、リダイレクトされた時点で loginRedirect の値が消えてしまい戻り先がわからなくなってしまいます。 users_controller でも、 urls_controller でも var $components = array('Auth'); は呼んでいるので、認証されなけれな http://example.com/users/login/ を呼ぶようになっています。 なぜいったん認証させにいくと Auth による認証が解除されてしまうのでしょうか?異なるモデル間では認証が継続しないとしたら、何が問題になっているのでしょうか。 似たような問題に遭遇しているのは英語のグループでも見かけたのですが、有効な解決策までたどり着いた人はいないようでした。。なにかヒントだけでもいただけると助かります。 |
| custar | 投稿日時: 2008-8-8 2:37 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: モデルをまたがった Auth 認証の継続 acl/auth の学習を一通り終えた直後なので、ちょっとは分かるかもしれません。
でも、正直なところ、説明されている内容をよく理解できませんでした。 ソースを見せてもらうのが一番いいのですが。 引用:
デフォルトのままだと、 $this->Auth->autoRedirect = true の場合、 (1) http://example.com/urls/add は webroot/.htaccess により $_GET["url"] = "urls/add" として抜き出され、 (2) $url = "/urls/add" は Auth により Auth.redirect としてセッションに記録、 (3) 認証後、Auth.redirect セッション値 ("/urls/add") を使ってリダイレクト という流れなのですが、これとどう違っているのか検証してみてください。 引用:
??? 「認証させにいくと Auth による認証が解除されてしまう」? まだ認証を済ませていないのに、認証が解除される? ここの意味が分かりません。 |
| kanbe | 投稿日時: 2008-8-8 10:21 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-17 居住地: 投稿: 40 |
Re: モデルをまたがった Auth 認証の継続 > custar さん
返信ありがとうございます。 実はソースコードの該当箇所などが含まれたものを投稿したのですが、XooPS のログインセッションが切れて、投稿が”なかったこと”になってしまい、力つきて内容を抜粋したものをさせていただきました。次からはメモ帳で推敲してから投稿するように致します。 いただきました(1)〜(3)の挙動を追ってみて、Auth.redirct の値がリダイレクト後にちゃんと入っているかという状況を確認してみたいと思います。 > まだ認証を済ませていないのに、認証が解除される? > ここの意味が分かりません。 こちらは、私が Auth の動作について理解していないための齟齬かと思います。処理の流れを理解することで、疑問に思っていたことについては自己解決できるよう努力いたします。 |
| custar | 投稿日時: 2008-8-8 11:18 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: モデルをまたがった Auth 認証の継続 引用:
ブラウザで編集作業をやるのは不便ですから、私も外部エディタで編集後貼り 付けています。ブラウザは名前通り、閲覧するためのソフトですから、複雑な 操作に耐えられませんね。 引用:
所詮はメモリ上のプログラム、書かれた通りにしか動かないので、絶対に原因 はあります。追及してみてください。 引用:
私も時間をかけて読み解こうとすれば目的とするところが分かるのでしょうが、 私自身も acl に関する作業中なので、御免なさいね。 引用:
ソースを追いかけてみてください。きっと何か分かります。 |
| admin | 投稿日時: 2008-8-8 12:27 |
管理人 ![]() ![]() 登録日: 2006-7-13 居住地: 投稿: 92 |
Re: モデルをまたがった Auth 認証の継続 セッションが切れてしまうと脱力しますね。
原稿、もったいないです。すみません。 今、XOOPSの設定を見返したところ、デフォルトの15分のままになっていました。 設定の変更ができることに今さら気がつき…。 とりあえず、30分にしておきました。 セキュリティ的には大丈夫なんでしょうかね。コレ? よろしくお願いします。 |
| kanbe | 投稿日時: 2008-8-8 18:45 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-17 居住地: 投稿: 40 |
Re: モデルをまたがった Auth 認証の継続 管理人様
お手数を煩わせて申し訳ありませんでした。 そもそも AutoLogin の機能を持たせている XooPS のフォーラムすらある状態では、多少時間を長くするくらいは大丈夫なのではないかと個人的には思います。 今後は出来るだけローカルのテキストエディタを活用しようと思いますが、最初の投稿で手間取る人もいるかもわからないので、大変ありがたい処置をありがとうございます。 今後ともどうぞよろしくお願いいたします。 |
| kanbe | 投稿日時: 2008-8-8 18:56 |
Baker ユーザ ![]() ![]() 登録日: 2008-4-17 居住地: 投稿: 40 |
Re: モデルをまたがった Auth 認証の継続 疑問を解決すべく、下記サイト
【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋 http://blog.ne2ma2.com/archives/160 を参考にもっともシンプルな認証の仕組みをつくりました。 Users モデルに関しては動作を確認したあとで、別途 users とは「異なるモデル」の Comments というモデルをつくり、 users の login() の関数の中身を以下のようにしました。 Comments のコントローラはこうです。 すると、/comments/index/ のビューにはちゃんと認証された旨のメッセージが表示されるということが確認できました。ログアウトしてから /comments/index/ にアクセすると、認証に失敗したメッセージが出ない代わりに、/users/login に飛ばされます(これはきっとAuthコンポーネントのデフォルトの挙動ですね)。 ・・・ということで、そもそもこちらに質問したのは、正しいユーザ名とパスワードでログインした後に別のモデルのビューに移動すると、再度ログインフォームに飛ばされているという状況に陥っていたためだったのですが、このもっとも簡単な例では、モデルをまたいでも私が質問したような「認証が解除」され「認証フォームに飛ばされる」という現象は起きないということがわかりました。 となると自分が書いた元のプロダクトのコードのどこかがおかしいためにモデルをまたいだ際にあたかも「認証が解除」されたかのような状態になるのかと思いますので、あとは自分のコードを突き詰めて見直してみようかと思います。 十分な検証が足らずお騒がせするような形になってしまい、申し訳ございませんでした。 |
| Nocco | 投稿日時: 2008-8-8 23:21 |
Baker スタート ![]() ![]() 登録日: 2007-12-27 居住地: 大阪、日本 投稿: 18 |
Re: モデルをまたがった Auth 認証の継続 「app/app_controller.php」で基底クラス(AppController の拡張)として「UserAppController」なんかを作って、そこの「beforeFilter()」で
とかすると「UserAppController」を拡張したコントローラではAuthのモデルとして必ず「User」を利用します。 自分が構築するときはこんな感じです ![]() 走り書きで申し訳ないです。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |






