2012-05-09 21 views
11

私はCakephpを使用しており、サブドメイン間でセッションを維持する問題があります。次のように私の問題は次のとおりです。CakePHPはメインドメインからサブドメインにセッションを維持します

  • ユーザーが認証された場合、それらが「customer.localhost /ホーム」にリダイレクトされている「localhostの/ログイン」
  • にログインします。

現在、Cakeは各ドメイン、つまりlocalhostとcustomer.localhostにクッキーを作成しています。 これは、セッションをユーザーのために機能させることができないことを意味します。サブドメイン間でセッションが機能するように、すべてのCookieドメインを親ドメインに固定する方法はありますか?

これは私のブートストラップに入力しようとしましたが、効果がありません: ini_set( 'session.cookie_domain'、 '.localhost');

これができないと思われる場合は、私がこの不満足な問題から移行できるように私に知らせてください。

多くのおかげで、

kSeudo

+2

? 1.3または2.x? –

答えて

16

セッション:

は、すべてのサブドメインやトップレベルドメインのセッションCookieを有効にするためには、あなたが実際にあなたのAPP/config/bootstrap.phpでそれを自分で設定する必要がありますファイル:

ini_set('session.cookie_domain', '.domain.com'); 

次に、APP/config/core.php f ILEは、低にセキュリティを設定する:「そうreferer_checkは で現在HTTP_HOSTにCakeSession対象ライン441に設定されます」

Configure::write('Security.level', 'low'); 



クッキー:クッキーにアクセスすることを許可されたドメイン名

this pageオン

それはあなたが 'ドメイン' 変数を使用することができることを説明しています。例: '.yourdomain.com'を使用して、すべてのサブドメインからのアクセスを許可します。彼らのコード例パー

<?php 
public $components = array('Cookie'); 
public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Cookie->name = 'baker_id'; 
    $this->Cookie->time = 3600; // or '1 hour' 
    $this->Cookie->path = '/bakers/preferences/'; 
    $this->Cookie->domain = 'example.com'; 
    $this->Cookie->secure = true; // i.e. only sent if using secure HTTPS 
    $this->Cookie->key = 'qSI232qs*&sXOw!'; 
    $this->Cookie->httpOnly = true; 
} 
+0

あなたの助けてくれてありがとう、私は結局それを働かせました。あなたが 'example.com'のようなあなたのホストのドメインを使用していることを忘れないでください。 – kSeudo

+0

最初のリンクは死んでいます – tsukimi

+0

@tsukimiありがとう - 削除されました。 – Dave

1

セッションCookieドメインを変更するには、アプリ/コンフィグ/ core.phpの中に設定があります:

使用しているのCakePHPのバージョン
Configure::write('Session', array(
    'defaults' => 'php', 
    'ini' => array(
     'cookie_domain' => '.example.com' 
    ) 
)); 
+0

これは私にとってはうまくいかなかったが、受け入れられた答えがあった。 – drmonkeyninja

+0

これは正しく動作しますが、正しいディレクティブ名が付いています。回答が編集されました。 – savedario

関連する問題