• 締切済み

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
  • PEARでのAuth認証について

    ただいまPEAR入門を参考に勉強しているのですが 認証部分でつまずいてしまっています。 どなたか御教授いただけませんでしょうか。 簡単なログイン認証をするためにサンプル通りのコードを 作って表示テストを行うものなのですが 認証できたら「認証済みです」 できていなければ「ID/パスワードが違います」 と表示されるようなものです。 IDもパスワードもきちんと入れているのですが認証できないため 悩んでいます。 以下そのコードを書きますので助言いただけるとありがたいです。 *contents.php* <?php require_once("Auth.php"); function loginFunction($usr, $status){ require_once("loginForm.php"); } $params = array( "dsn" => "mysqli://pear:pass@localhost/pear", "table" => "auth", "usernamecol" => "username", "passwordcol" => "password"); $myAuth = new Auth("DB", $params, "loginFunction"); $myAuth -> start(); if($myAuth -> getAuth()){ print("認証済です。"); } ?> *loginForm.php* <?php switch($status){ case AUTH_IDLED : case AUTH_EXPIRED : $err = "ログイン期限が切れています。再ログインしてください。"; break; case AUTH_WRONG_LOGIN : $err = "ユーザID/パスワードが間違っています。"; break; } ?> <html> <head> <title>ログインページ</title> </head> <body> <form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?>"> <table border="0"> <tr> <th align="right">ユーザID:</th> <td><input type="text" name="username" size="15" maxlength="20"></td> </tr> <tr> <th align="right">パスワード:</th> <td><input type="password" name="password" size="15" maxlength="20"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="ログイン"> </td> </tr> </table> <font color="red"><?php print($err); ?></font> </form> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう