2

同じサーバーで2つのcodeigniterインストールを実行しています。

最初のアプリは:localhost / aa / index.php

2番目のアプリは:localhost / aa / invoice / index.php

2番目のアプリは最初のアプリフォルダーにあります。ライブ環境では、それらは同じドメインにあります。シングルサインオンを機能させようとしています。そのため、aaアプリケーションでuserdataを設定している場合は、請求書フォルダーでも確認できるはずです。

セッションを共有する方法はありますか?

フォルダは常に同じドメインにあるので、ciライブラリ(phpのみ)の外部のセッションでも作業できます。

編集: データがない場合は、同じセッションIDが表示されます。1つのアプリケーションにいくつかの変数を追加すると、もう1つのアプリケーションが同期しなくなります。

また、データベースにセッションが保存されています(両方のアプリケーションが同じデータベースを共有しています)。

提案してください。

ありがとう!:)

4

6 に答える 6

7

何らかの理由でCodeigniterは、ネイティブPHPセッションではなく、独自のセッション実装をロールバックします。

http://codeigniter.com/user_guide/libraries/sessions.html

使用する選択肢があります:

  1. クッキーストレージ(理想的ではない、ストレージサイズが小さい、クッキー内の機密データ?)。
  2. データベースセッション(セッションID cookieを使用して永続化)。
  3. 自分でオーバーライドしてロールします(ネイティブのphpセッションを使用するために!)

明らかに、両方のアプリが同じセッションデータから読み取ることができるように、セッション識別子が正しく構成されていることを確認する必要があります。データベース実装を使用する場合は、両方のアプリが同じDBにアクセスできることを確認する必要があります。

複雑さを増すために、セッションを暗号化することを選択した場合、暗号化クラスで使用されるソルトも両方のアプリで同じである必要があるため、どちらかが共有セッションデータを復号化できます。

于 2012-07-16T11:16:25.600 に答える
2
$config['encryption_key'] = 'epitome';

構成名は、encryption_key両方のアプリケーションフォルダーで同じになります。

encryption_keyin codeigniterを変更するためのパスは、application/config/config.php行番号228です。

于 2014-07-24T12:20:34.287 に答える
1
$config['sess_cookie_name'] = 'myvalue';

config.phpファイルでは、「ファイル」セッションドライバーを使用して、両方のCIアプリに同じ値を設定できます。

CI_Session Object

([userdata] =>配列([__ci_last_regenerate] =>1490351129[レベル]=>1[ユーザー]=>103[フルネーム]=>Ruben Caldera)

[_driver:protected] => files
[_config:protected] => Array
    (
        [cookie_lifetime] => 600
        [cookie_name] => MyHiddenValue
        [cookie_path] => /
        [cookie_domain] => 
        [cookie_secure] => 
        [expiration] => 600
        [match_ip] => 
        [save_path] => /tmp
    )

)。

于 2017-03-24T10:42:37.710 に答える
0

もし私が....実用的ではなく、通常の慣習に反するこれらの設計上の問題は、長く根深い問題の基礎を提供することに気づきました。フレームワークの2つの異なるバージョン間でセッションデータを共有するのは、2つの異なるバージョンであることがわかっている場合です。これは、動作が異なるためです...何をしても、この設計上の欠陥により、アーキテクチャが脆弱になり、遅かれ早かれ、あなたはそれを捨てなければならないでしょう。

Plzは、後で他の方法を見つけた場合はお知らせください。

于 2012-07-17T05:08:01.787 に答える
0

同じ暗号化キーを使用して同じサーバーにコードをインストールする場合、デフォルトでは、両方のインストールでセッションが共有されます。実際、同じサーバー上にある別のクライアント用にcodeigniterインストールをコピーしたときに発見しました。心配だったのでバグだと思いました。

于 2013-12-03T18:43:34.037 に答える
-2

コードを同じサーバーに移動すると、デフォルトで両方のセッションが共有を開始します。

于 2012-07-16T10:57:09.603 に答える