2 つのアプリケーション (フロントエンドとバックエンド) で構成される symfony プロジェクトに取り組んでおり、管理者がログインせずにバックエンドからユーザー データ (フロントエンド) にアクセスできるように、バックエンドで 2 つ目のセッションを手動で作成するように求められました。各アプリケーションが独自の Cookie を持つように、factory.yml に異なる名前を設定しました。基本的に、バックエンドからユーザーを取得し、バックエンド セッションを破棄せずにフロントエンド Cookie を手動で作成し、フロントエンドにリダイレクトする必要があります。次のコードを試しましたが、うまくいきません:
$user = $this->getUser()->getAttribute('some_attribute');
$session = new sfSessionStorage();
$option = array(
'session_name' => 'frontend_session_name'
);
$session->initialize($options);
// some code to push the user in the new cookie
$this->redirect('https://frontend.php');
私は長い間 symfony を使用しておらず、ここで少し迷っていることを認めなければなりません。新しい Cookie にユーザー データを入力する必要があることはわかっていますが、その方法がわかりません。どんな助けでも大歓迎です。
編集:推進力を使用していることを忘れていました。編集#2:意図したことを行う次のソリューションを思いつきました:
$user = $this->getUser()->getAttribute('some_attribute'); //retrieving the user whose data I'd like to access
$currentSessionId = session_id();
session_write_close();
session_name('frontend_session_name');
session_start();
session_regenerate_id();
$_SESSION['symfony/user/sfUser/culture'] = 'en';
$_SESSION['symfony/user/sfUser/lastRequest'] = time();
$_SESSION['symfony/user/sfUser/authenticated'] = 1;
$_SESSION['symfony/user/sfUser/credentials'] = array('frontend_user');
$_SESSION['symfony/user/sfUser/attributes'] = array(
'symfony/user/sfUser/attributes' => array(
'user' => $user
)
);
session_write_close();
session_name('backend_session_name');
session_id($currentSessionId);
session_start();
$this->redirect('/frontend.php');
そのため、手動でセッションを再作成し、必要なデータをプッシュしました。助けようとした人に感謝します。