1

簡単なCakeアプリケーションを開発し、コーディングが完了した後、Webサーバーにアップロードしましたが、いくつかの問題があります(ローカルホストでは、チャームのように機能します)。

  • setFlashメッセージが機能しません(データベースでSessionsを使用していて、いくつかのセッションのレコードがありますcake_sessions
  • ログインに成功すると、ログインページに再度リダイレクトされます。
  • キャッシュファイルが消えてしまうことがあります。(私のtmpフォルダは書き込み可能です)

実際には、ログインする前にアクションを実行することはできYou are not authorized to access that location.ませんが、ログインページの上部にフラッシュメッセージが表示されますが、表示されません。ただし、ユーザー名/パスワードが正しくない場合は、メッセージが表示されます(wth?

UsersControllerのログインおよびログアウトメソッド:

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
}

public function logout() {
    $this->redirect($this->Auth->logout());
}

(ログから)最後に実行された100個のクエリ:

SELECT `Session`.`id`, `Session`.`data`, `Session`.`expires` FROM `srv`.`cake_sessions` AS `Session` WHERE `id` = '7orjo8clp192qeie55k6pqro26' LIMIT 1
4

2 に答える 2

1

Web サーバーでセッションが壊れているようです。システム クロックを確認してください。数分以上ずれている場合は、すぐにではなくてもすぐにセッションが期限切れになります

于 2012-09-28T22:38:36.887 に答える
0

ユーザーモデルでログイン用にコンポーネントが設定されていることを確認してください。それは次のようなものでなければなりません

 public $components = array(
    'Session',
    'Auth' => array(
        'loginRedirect' => array('controller' => 'desired_controller', 'action' => 'desired_action'),
        'logoutRedirect' => array('controller' => 'desired_controller', 'action' => 'display', 'home')
    )
);

また、 beforeFilter が正しく設定されていることを確認してください

//UsersController

  public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('add', 'logout', 'other_actions');
}

編集

これは、 cakephp のログイン ページがどこにも行かないという説明と非常に似ているようです。

これも奇妙な動作を考慮してチェックする価値があるかもしれません

https://github.com/cakephp/cakephp/commit/c96e364cbb6ec8dd72dd220836a07ed104d2d50a . セッションの誤った有効期限が修正されます

于 2012-09-28T14:28:34.277 に答える