• 締切済み

CakePHP Authコンポーネントについて

CakePHPのAuthコンポーネントでユーザ認証機能を実現しようとしているのですが、 ログアウト後の以下の問題を解決できずにいます。 ・ログインアクションがあるコントローラとは別のコントローラにアクセスした場合  ログイン画面に飛ばずそのままページが表示されてしまう。 ・ログインアクションがあるコントローラの別アクションにアクセスした場合  ログイン画面に飛ぶ。   いずれのコントローラも 「$this->Auth->allow(××)」は記載しておりません。 もし原因・対策をご存じであれば是非ご教示下さい。 宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • warez
  • ベストアンサー率57% (29/50)
回答No.1

>・ログインアクションがあるコントローラとは別のコントローラにアクセスした場合 > ログイン画面に飛ばずそのままページが表示されてしまう。 このコントローラではAuthコンポーネントが使われていないからでは。 >・ログインアクションがあるコントローラの別アクションにアクセスした場合 > ログイン画面に飛ぶ。 これは正しい挙動だと思います。

関連するQ&A

  • CakePHPでログイン後に前のページに戻るには?

    CakePHPでAuthコンポーネントを使いログインする場合、 ログイン後に前のページに戻る方法はありますか?

    • ベストアンサー
    • PHP
  • cakePHPでSQLが実行できない。

    cakePHP2.2でSQLが実行できません。 実行のやり方が悪いのでしょうが ネットで探してもイマイチ理解できません・・ やりたいのは画面から入力された値を使い SQLを実行することです。 何が駄目なのか教えてください。 controllerのソース <?php class BuhinController extends AppController { public $layout = 'user_default'; //## ログイン処理 public function login(){ $bool = false; $rslt = null; Configure::write('debug', 1); $sql = "select id from table_user where add = '". $_POST["add"] . "' "; $sql = $sql. " and pass = '". $_POST["pass"] . "'"; $this->query($sql); } public function index(){ } public function logout(){ $this->Auth->logout(); } } ?> エラーメッセージ Fatal Error Error: Call to undefined method BuhinController::query() File: C:\xampp\htdocs\cake\app\Controller\BuhinController.php よろしくお願いします。

    • ベストアンサー
    • PHP
  • PEAR::Auth認証後、各ページをどうすればいいでしょうか?

    PEAR::Authを使って、認証システムを作りたいと思っています。 特定のフォルダ以下に置いてあるPHPファイルにアクセスするには、ログインが必要な仕様にしたいです。 直接ブックマーク等に登録されても、ログイン済みでない人がアクセスしたら、ログイン画面に飛ばして認証を要求するようにしたいです。 PEAR::Authを使って、とりあえず、ログイン画面と、ログインしたら「ログイン済みです。」失敗したら「ログイン失敗しました。」という画面を作るのには成功しました。(ここまでは、解説ページも公開サンプルも非常に多いので、何とかなりました。) お聞きしたいのは、この後で、ログイン後に各ページを回るときに、上記の仕様にするには、各ページにどうのような記述をすればいいのでしょうか?各ページの頭に毎回ログインに関する記述を書いて、if ($authobj->getAuth()) {~ のようなif文でページを囲まなくてはいけないのでしょうか?

    • 締切済み
    • PHP
  • 「PEAR::Auth認証」の結果による判別について

    現在、PEAR::Authを利用して認証処理を作成しております。 質問させていただきたい内容は、 AuthクラスのgetAuthメソッドについてです。 まず、Authクラスのインスタンスを生成し、 start()メソッドを実行して認証を行い、 その認証の結果をgetAuthメソッドによって 取得しております。 次に、getAuthメソッドにより得た結果を IF文で判別して、結果がTRUEの場合は処理を続行し、 結果がFALSEの場合はログイン画面に戻るように 制御しようとしたところ、 FALSEの場合の制御が思うように動作しませんでした。 以下に、ソースを記述いたします。 login_check.php ************************************************* <?php require_once("Auth/Auth.php"); $params = array( "dsn" => "pgsql://postgres:postgres@win/db", "table" => "test_table", "usernamecol" => "test_user", "passwordcol" => "test_passwd", "cryptType" => "none", ); // インスタンス生成 $auth = new Auth("DB", $params , "LoginFuntion"); // 認証開始 $auth->start(); // 結果を判別 if (!$auth->getAuth()) { // 結果がFALSEだったらログイン画面に戻る header("Location: ./login.php"); exit; } else { // 結果がTRUEであれば処理を続行 ・ ・ ・ } ?> $auth->getAuth()の使い方が違うのかも知れませんが、 Authのソースを見ても分かりませんでした。 どなたか、「PEAR::Auth認証」の結果による判別に ついてお教え下さい。。。 ※今回は、ログイン画面とチェックPHPを分けております。 ログイン画面はHTMLで、チェックPHPにAuthを利用しております。 この利用の仕方が既に間違っているのでしょうか? 併せてお教えいただければと思います。

    • 締切済み
    • PHP
  • PEAR::Authでディレクトリ毎に認証したい

    phpのPEAR::Authでディレクトリが変わった場合に再度認証画面を表示させるようにしたいのと考えております。 例えば (1)http://aaa.jp/aaa/index.php にアクセスした際にphp.iniのauto_prepend_fileでログインページを強制的に表示させ認証させる 認証後は (2)http://aaa.jp/aaa/bbb.php (3)http://aaa.jp/aaa/bbb/index.php などのページにはアクセスできるようにする (4)http://aaa.jp/bbb/index.php にアクセスした場合には再度認証を求める(IDやパスは(1)で認証したものとは異なる) といった動作をしたいのですが、(1)で認証すると、(4)にアクセスする時まで認証したものとして表示されてしまいます。 また、サブドメインを設定して別ドメインとすれば、再度認証を求められるようなのですが、運用上の問題で、同じドメインで管理しなければなりません。 どのようにすればいいかご存じの方いらっしゃいましたら、ご教授お願いいたします。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • CakePHP で、質問させていただきます。CakePHPは、初心者で

    CakePHP で、質問させていただきます。CakePHPは、初心者です。 app/controllers のコントローラ「mobilehellow_controller.php」で、以下のようにデータをセットして、DBにインサートしようとしていますが、何もDBには追加されません。 $saveData = array( "NUM" => $item[$hscan_offset]['kyujin_syokusyu'], "JOBTYPE" => 'kyujin_syokusyu', )); $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); 画面上には、こんな文字が表示されました。 Query: INSERT INTO "mobilehellows" ("NUM") VALUES ('nextval(''"helloworkmobilep01_NUM_seq"''') DBの構成はこれです。 NUM integer NOT NULL JOBTYPE text エラーも何も出なので、どうしてなのかわかりません。 どうか、ご存知の方お教えください。

    • ベストアンサー
    • PHP
  • CakePHP 1.3について

    CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SMTP AUTHについて教えて下さい

    SMTP AUTHをおこなう場合、よく LOGIN、CRAM-MD5、PLAIN という3つの認証方式を目にしますが、 これらの違いが良く分かりません。 CRAM-MD5、PLAINに関しては自分なりに調べたところ、 smtpサーバにログインする際に何か暗号化するようですがLOGINの場合も暗号化を行うのでしょうか?

  • CakePHPの仕組みについて

    現在 CakePHPを学習している者です。 たとえば BoardsController というコントローラーのクラスと、 Board というモデルのクラスがある場合、 BoardsController クラスの定義において $this->Board->find('all') などという記述が可能であると学びました。 http://goo.gl/s4m9r 「これは、 BoardsControllerクラス内において Boardクラスのインスタンスが Boardという名前で CakePHPによって自動生成されているからである。」 という私の理解は合っておりますでしようか?

    • ベストアンサー
    • PHP
  • cakePHPのrouteについて

    現在、cakePHPを使って、プログラムを行っているのですが、 その場合単純に'/'とする場合のみ、routeで実行できるのですが、 formからsubmitボタンが押されたとき、route.phpの名前を見て処理を実行させることができません。 formは、 <form action="<?php echo h($html->url('/blog/view')) ?>" method="post" style="margin-bottom:1em"> <p><?php echo $html->input('Task/content') ?> <?php echo $form->submit("TEst", array("action" => "sample", "type" => "post")) ?> </form> として記述しています。 route.phpには、 Router::connect('/blog/:action', array('controller' => 'top', 'action' => 'cake', 'home')); と記述しています。 考え方'/blog/:action'が、blog(コントローラー名)、actionがfunction action名() {} なので、formから、blogコントローラーのviewアクションを実行するように指示を出し、 本来ならその手順に従い画面が表示される。 なのですが、 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 と表示される。 この場合の対策はどうすべきなのでしょうか? つまり、formアクションで渡された引数をroute.phpのroute:connect()の指示の通りに実行し、画面を表示させたい。 宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう