0

私が働いている会社が使用している Web アプリケーションの代替を構築しています。これは CakePHP 1.3 を使用して構築され、Symfony 2 を使用してゼロから書き直しています。2 つのシステムは並行して実行され、さまざまな機能が Symfony 2 に転送され、古い CakePHP アプリケーションから削除されます。

ログインの詳細との混乱を避けるために、CakePHP を完全にオフにして Symfony 2 のセキュリティに依存できるようになるまで、CakePHP でユーザー ログイン側を処理するようにします。その間、CakePHP アプリケーションは、ユーザー ID を含む Cookie を生成します。セキュリティの初歩的な形として、Symfony でこの Cookie を使用したいと考えています。

ただし、作成された Cookie を Symfony に読み取らせたりロードさせたりすることはできません。これが私のコードです:

public function securitytestAction()
{   

    $request = $this->getRequest($_COOKIE);
    $cookie = $request->headers->getCookies('CakeCookie[passport]');

    print_r($cookie);

    return $this->render('InstructorBundle:Default:test.html.twig');
}

Firebug を使用すると、CakePHP がログイン時に生成する Cookie は「CakeCookie[passport]」という名前になります。暗号化もされていません。

私が得るエラーはこれです:

FatalErrorException: エラー: DefaultController.php 行 713 の未定義メソッド Symfony\Component\HttpFoundation\HeaderBag::getCookies() への呼び出し

これを機能させるにはどうすればよいですか?

編集
Cheesemacfly は次の置き換えを提案していました:

$request = $this->getRequest($_COOKIE);
$cookie = $request->headers->getCookies();

これだけで:

$request = $this->getRequest()->cookies->all();

次の応答が返されます。

配列 ( [PHPSESSID] => gptbmh61mfkqn6p86d3suhnt13 )

編集 2
CakePHP が Cookie を生成するために使用したコードを見てきましたが、Cookie のドメインを提供していませんでした。.domain.orgサブドメインからもアクセスできるように、ドメインが になるように修正し

ここで、Firebug を使用して Symfony2 アプリケーションにアクセスすると、Cookie が他の 2 つの CakePHP セッション Cookie (必要ありません) と一緒にリストされていることがわかります。3 つの CakePHP ドメインはすべてwww.domain.org、サブドメインnew.domain.orgを表示する場合でも使用しますが、Symfony2 が使用する 1 つの Cookie は、ドメイン名をnew.domain.org.Symfony2 として表示しますが、必要な Cookie の読み込みを拒否します。

4

2 に答える 2

0

各リクエスト中に、Symfony2 はデフォルトで Twig と PHP テンプレート エンジンの両方でグローバル テンプレート変数 app を設定します。app 変数は GlobalVariables インスタンスで、いくつかのアプリケーション固有の変数に自動的にアクセスできます。

app.security - The security context.
app.user - The current user object.
app.request - The request object.
app.session - The session object.
app.environment - The current environment (dev, prod, etc).
app.debug - True if in debug mode. False otherwise.

例: 小枝の場合: {{ app.request.method }} PHP の場合: echo $app->getRequest()->getMethod() 小枝の場合: {{ app.user.username }} ただし、セッション オブジェクトの場合: 小枝の場合: {{ app.session.varname }} PHP の場合: // わかりません。呼び出し方を知っていますか?

于 2013-07-22T16:06:26.957 に答える