私はサブドメインからユーザーにログインするためにAjaxを使用しています。 Yii2アプリは別のサブドメインにあります。両方のサブドメインは、同じCookieドメインとセッションドメインを使用し、パスを保存するように設定されています。私はこのような非アプリのサブドメインで使用したのと同じセッションにユーザー情報を書き込むためにAjaxの呼び出しでセッションIDを含めています:
$session = Yii::$app->session;
$session->open();
$session->setId($post["session"]);
$session["user.id"] = $user->id;
echo $session->id; // This does not return the same ID originating from post!
残念ながら、ユーザ情報が既存の既にセッションに書かれていますが、新しいものではありません1。ログインプロセスの途中でセッションが関わっているのですか、それともなぜ動作していませんか?私もsession_id($post["session"])
を試しましたが、何もありません。
これは以前のドメインで実際に動作していたので、何か不足しているはずです。投稿されたAJAXの情報はすべて正解であり、チェックされていれば、ユーザーは適切に(ログをチェックして)間違ったセッションにログインしています。
ありがとうございます!
ありがとう、これは少し役に立ちます。実際には、セッションファイルにはログイン前とログイン後の情報(ユーザーの詳細)が含まれていますが、以前は発生していませんが、IDは全く異なる新しいファイルにセッションを書き込みます。何か案は? – jeesus
たとえば、 '$ oldId = session_id(); $セッション= Yii :: $アプリ - >セッション。 $セッション - > setId($ oldId); $ session-> open(); $ session-> set( "oldId"、$ oldId); '。それで、私はセッションが適切な古いIDを保存しているのを実際に見ることができますが、何らかの理由でセッションIDの古いIDを使用しないで新しいIDを取得します。 – jeesus
さて、それを手に入れました。 '$ user-> login()'メソッドの後に 'session_id()'を割り当てる必要がありました。 – jeesus