2016-08-31 22 views
0

私はCakePHPバージョン3.2.10に基づいてアプリケーションを持っています。私はCakePHPでまったく新しくなっています。今CakePHPはサーバを変更した後にクッキーとセッションを設定しません。

public function login() 
{ 
    $this->set('title', 'Logowanie'); 
    $this->set('bodyclass', 'main-page'); 

    if ($this->request->is('post')) { 
     $user = $this->Auth->identify(); 
     if ($user) { 
      if($user['blocked'] == 0) { 
       $this->Auth->setUser($user); 
       if ($this->Auth->user('role') == 'admin') 
        return $this->redirect(['controller' => 'Admin', 'action' => 'index']); 
       return $this->redirect($this->Auth->redirectUrl()); 
      } 
      else{ 
       $this->Flash->error('Konto zostało zablokowane przez administratora serwisu. Skontaktuj się z Biurem Obsługi.'); 
      } 
     } else $this->Flash->error('Błędne dane logowania. Spróbuj ponownie.'); 
    } 
} 

のような問題

$this->loadComponent('Auth', [ 
      'authorize'=> 'Controller', 
      'authenticate' => [ 
        'Form' => [ 
          'fields' => [ 
            'username' => 'email', 
            'password' => 'password' 
          ], 
          'scope' => [ 
            'Users.active' => 1, 
          ] 
        ] 
      ], 
      'loginAction' => [ 
        'controller' => 'Users', 
        'action' => 'login' 
      ], 
      'logoutAction' => [ 
        'controller' => 'Users', 
        'action' => 'logout' 
      ], 
      'logoutRedirect' => [ 
        'controller' => 'Pages', 
        'action' => 'index' 
      ], 
      'unauthorizedRedirect' => '/', // $this->referer() 
    ]); 

と、ログインアクション:私のアプリケーションでは、私は、このように構成されたCSRFコンポーネントとAuthコンポーネントを使用するアプリケーションがどこにあるか

数日前、私は、サーバーを変更しました実行後、変更後にログインが停止しました。ログインをクリックすると、CSRFトークンCookieが見つからないというメッセージが表示されます。コンポーネントが問題であるかどうかテストするためにcsrfを無効にしてからもう一度試してみると白い画面が表示され、ページが更新されないと何も起こりません。新しいサーバー、古いものはすべてOK、クッキーは設定されています。

私は、クッキーだけでなく、すべてのセッションがうまくいかないことを知りました。私は$ _SEESIONをダンプしようとしますが、$ this-> Auth-> setUser($ user)を呼び出した直後に何かが表示されます。だから私はいくつかのソリューションに目を通すと、セッションをセットアップするためのconfig/app.phpの設定があることを見つける:

'Session' => [ 
    'defaults' => 'php', 
], 

そして、そのように設定すると、セッションがデフォルトのPHPのディレクトリに格納されていることを読みました。だから私はそれをケーキに変えました(tmpフォルダにdirセッションを作成して777の権限を追加しても)。しかし問題は解決されませんでした。なぜそれがうまくいかないのか分かりません。私はcookiePathと他の設定私はセッションの設定を設定しようとしましたが、それでも動作しません。

これはサーバーの問題(アクセス許可)である可能性があります。サーバーについての言葉はほとんどありません:すべてが動作していた古いサーバーは私のプライベートサーバー(フルアクセス権を持っています)、新しいサーバー(または仮想サーバー/ホスト)はほとんどホスティング会社(home.pl)にあります。設定する。

答えて

0

あなたは次の手順を実行していることを確認してください:あなたのConrollerコードで

//For Set 
var $var = array('Cookie'); 

//For Write 
$this->Cookie->write('YOUR DESIRED NAME', cookieData, $expires = null); 

//For Read 
$this->Cookie->read('YOUR DESIRED NAME'); 
+0

私は自分ですべてのクッキーを保存しない参照してくださいクッキーの詳細についてはtmpフォルダ

からモデルと持続性のためのキャッシュフォルダを削除するので、これらのステップは必要ありません。ログインするには、デフォルトのcakephp認証システムを使用します。 cakePHPではクッキーは設定されていません。 – Manveru

+0

だから、私たちがあなたの発行したものを解決できるように私たちにいくつかのコードを示す方が良いです。 – Noman

+0

私は自分の問題がどこにあるのか、どんなコードを置くべきかを知りません。しかし、大丈夫。問題が発生しているようだと思われるログインアクションコードを追加しました。 – Manveru

0

チェックは以下の点

1のためにsrc/Controller/AppController.phpにする必要がありますが)あなたはinitialize()またはbeforeFilter()方法で適切にクッキーのコンポーネントをロードしていますか?

2)$this->Cookie->configKey()を使用してCookie設定でドメインとパスを設定しています(はい、ドメインを新しいドメインに変更するかドメイン設定を削除します)。

3)Document

+0

私のAppControllerにこれのための追加の設定がありません。ログインを有効にするには、このコンポーネントを初期化する必要があります。私が言ったように、それはこの構成なしに、他のサーバー上で完璧に動作します。 – Manveru

+0

他のサーバーとは他のドメインを意味しますか? –

+0

tmpフォルダ内のモデルと永続性キャッシュファイルを削除しましたか? –

関連する問題