1

認証の問題の解決策を探しています。去年の5月に同じ問題(一番下の#2)を持っている人(symfony-users Googleグループ)を1人だけ見つけました。私の知る限り、リストに解決策は投稿されていません。

Mac OS Xの開発環境では、sfDoctrineGuardPluginが正しく機能しています。安全なページにアクセスしようとすると、ログインにリダイレクトされます。有効なクレデンシャルを入力すると、最初に要求されたページにリダイレクトされます。

DreamHostのテスト環境では、正しく機能していません。安全なページにアクセスしようとすると、ログインにリダイレクトされます。有効なクレデンシャルを入力すると、最初に要求されたページにリダイレクトされますが、symfonyは認証ステータスを失い、フォームを空にしてもう一度ログインに(再)リダイレクトします。(対照的に、無効な資格情報を入力すると、ログインページにエラーメッセージが表示され、ユーザー名は入力されたままになります。)

各環境で、symfonyは私のクレデンシャルが有効であり、「admin」権限を持っていることを確認しますが、テストは要求されたページにリダイレクトされるとすぐにそれらのクレデンシャルを忘れます。

apacheエラーログには興味深いものは何も表示されません。

開発ログスニペット:

Feb 09 10:05:51 symfony [info] {sfPatternRouting} /reportのルート"report"(/report.:sf_format)をパラメーター配列('module' =>'report'、'action' =>'index')と一致させます、'sf_format' =>'html'、)
2月9日10:05:52symfony[info]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日10:05:52symfony[info]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日10:05:52symfony[info]{sfFilterChain}フィルター「sfBasicSecurityFilter」を実行しています
2月9日10:05:52symfony[info]{sfBasicSecurityFilter}アクション「report/index」には認証が必要です。「sfGuardAuth/signin」に転送します
2月9日10:05:52symfony[info]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日10:05:52symfony[info]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日10:05:52symfony[情報]{sfFilterChain}フィルター「sfExecutionFilter」を実行しています
2月9日10:05:52symfony[情報]{sfGuardAuthActions}「sfGuardAuthActions->executeSignin()」を呼び出す
2月9日10:05:52symfony[情報]{sfPHPView}レンダリング"/Library/WebServer/WebSites/Documents/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php"
2月9日10:05:52symfony[info]{sfPartialView}レンダリング"/Library/WebServer/WebSites/Documents/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/_signin_form.php"
2月9日10:05:52symfony[info]{sfPHPView}「/Library/WebServer/WebSites/Documents/apps/backend/templates/layout.php」でコンテンツを装飾する
2月9日10:05:52symfony[情報]{sfPHPView}レンダリング"/Library/WebServer/WebSites/Documents/apps/backend/templates/layout.php"
2月9日10:05:52symfony[情報]{sfWebResponse}ステータス「HTTP/1.1401未承認」を送信
2月9日10:05:52symfony[info]{sfWebResponse}ヘッダー「Content-Type:text / html; charset=utf-8」を送信します
2月9日10:05:52symfony[情報]{sfWebDebugLogger}構成12.62ミリ秒(12)
2月9日10:05:52symfony[情報]{sfWebDebugLogger}ファクトリ58.15ミリ秒(1)
2月9日10:05:52symfony[情報]{sfWebDebugLogger}アクション"sfGuardAuth/ signin" 6.18ミリ秒(1)
2月9日10:05:52symfony[info]{sfWebDebugLogger}「sfGuardAuth/signin」の「成功」を表示13.92ミリ秒(1)
2月9日10:05:52symfony[情報]{sfWebDebugLogger}部分的な"sfGuardAuth/ _signin_form" 4.84ミリ秒(1)
2月9日10:05:52symfony[情報]{sfWebResponse}コンテンツの送信(53797 o)
Feb 09 10:06:04 symfony [info] {sfPatternRouting} /loginのルート"sf_guard_signin"(/ login)をパラメーター配列と一致させます('module' =>'sfGuardAuth'、'action' =>'signin'、)
2月9日10:06:04symfony[情報]{sfGuardSecurityUser}ユーザーが認証されました
2月9日10:06:04symfony[情報]{sfGuardSecurityUser}クレデンシャル「admin」を追加
2月9日10:06:04symfony[info]{sfFrontWebController}「http://localhost/backend_dev.php/」にリダイレクト
2009年2月10:06:04symfony[情報]{sfWebResponse}ステータス「HTTP/1.1302が見つかりました」を送信
2月9日10:06:04symfony[info] {sfWebResponse}ヘッダー「場所:http:/localhost/backend_dev.php/」を送信します
2月9日10:06:04symfony[info]{sfWebResponse}ヘッダー「Content-Type:text / html; charset=utf-8」を送信します
2月9日10:06:04symfony[情報]{sfWebDebugLogger}構成1.30ミリ秒(8)
2月9日10:06:04symfony[情報]{sfWebDebugLogger}ファクトリ58.35ミリ秒(1)
2月9日10:06:04symfony[情報]{sfWebDebugLogger}アクション"sfGuardAuth/ signin" 217.06 ms(1)
2月9日10:06:04symfony[情報]{sfWebDebugLogger}データベース(Doctrine)0.03ミリ秒(5)
2月9日10:06:04symfony[情報]{sfWebResponse}コンテンツの送信(123 o)
Feb 09 10:06:04 symfony [info]{sfPatternRouting}ルート"homepage"(/)を/のパラメーター配列と一致させます('module' =>'report'、'action' =>'index'、)
2月9日10:06:04symfony[info]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日10:06:04symfony[info]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日10:06:04symfony[info]{sfFilterChain}フィルター「sfBasicSecurityFilter」を実行しています
2月9日10:06:04symfony[info]{sfFilterChain}フィルター「sfExecutionFilter」を実行しています
2月9日10:06:04symfony[info]{reportActions}「reportActions->executeIndex()」を呼び出す
2月9日10:06:04symfony[info]{sfPHPView}レンダリング"/Library/WebServer/WebSites/Documents/apps/backend/modules/report/templates/indexSuccess.php"
2月9日10:06:05symfony[info]{main}「navigation->executeNavMenu()」を呼び出す
2月9日10:06:05symfony[情報]{sfWebResponse}ステータス「HTTP/1.1200OK」を送信
2月9日10:06:05symfony[info]{sfWebResponse}ヘッダー「Content-Type:text / html; charset=utf-8」を送信します
2月9日10:06:05symfony[情報]{sfWebDebugLogger}構成1.93ミリ秒(10)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}ファクトリ60.49ミリ秒(1)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}アクション"レポート/インデックス"66.68ミリ秒(1)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}データベース(Doctrine)0.02 ms(3)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}「レポート/インデックス」の「成功」を表示454.39ミリ秒(1)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}コンポーネント"navigation/ navMenu" 0.17 ms(1)
2月9日10:06:05symfony[情報]{sfWebDebugLogger}部分的な「navigation/_navMenu」19.78ミリ秒(1)
2月9日10:06:05symfony[情報]{sfWebResponse}コンテンツの送信(164075 o)

テストログスニペット:

Feb 09 06:21:36 symfony [info] {sfPatternRouting} /reportのルート"report"(/report.:sf_format)をパラメーター配列と一致させます('module' =>'report'、'action' =>'index' 、'sf_format' =>'html'、)
2月9日06:21:36symfony[情報]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日06:21:36symfony[情報]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日06:21:36symfony[info]{sfFilterChain}フィルター「sfBasicSecurityFilter」を実行しています
2月9日06:21:36symfony[info]{sfBasicSecurityFilter}アクション「report/index」には認証が必要です。「sfGuardAuth/signin」に転送します
2月9日06:21:36symfony[情報]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日06:21:36symfony[情報]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日06:21:36symfony[情報]{sfFilterChain}フィルター「sfExecutionFilter」を実行しています
2月9日06:21:36symfony[情報]{sfGuardAuthActions}「sfGuardAuthActions->executeSignin()」を呼び出す
2月9日06:21:36symfony[情報]{sfPHPView}レンダリング"/home/username/test.example.com/project/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php"
2月9日06:21:36symfony[info]{sfPartialView}レンダリング"/home/username/test.example.com/project/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/_signin_form.php"
2月9日06:21:36symfony[info]{sfPHPView}コンテンツを「/home/username/test.example.com/project/apps/backend/templates/layout.php」で飾ります
2月9日06:21:36symfony[情報]{sfPHPView}レンダリング"/home/username/test.example.com/project/apps/backend/templates/layout.php"
2月9日06:21:36symfony[情報]{sfWebDebugLogger}設定822.85ミリ秒(12)
2月9日06:21:36symfony[情報]{sfWebDebugLogger}ファクトリ343.18ミリ秒(1)
2月9日06:21:36symfony[情報]{sfWebDebugLogger}アクション"sfGuardAuth/ signin" 7.63ミリ秒(1)
2月9日06:21:36symfony[情報]{sfWebDebugLogger}「sfGuardAuth/signin」の「成功」を表示19.09ミリ秒(1)
2月9日06:21:36symfony[情報]{sfWebDebugLogger}部分的な"sfGuardAuth/ _signin_form" 4.44ミリ秒(1)
2月9日06:21:36symfony[情報]{sfWebResponse}コンテンツの送信(52356 o)
Feb 09 06:21:45 symfony [info] {sfPatternRouting} /loginのルート"sf_guard_signin"(/ login)をパラメーター配列と一致させます('module' =>'sfGuardAuth'、'action' =>'signin'、)
2月9日06:21:45symfony[情報]{sfGuardSecurityUser}ユーザーが認証されました
2月9日06:21:45symfony[情報]{sfGuardSecurityUser}クレデンシャル「admin」を追加
2月9日06:21:45symfony[info]{sfFrontWebController}「http://test.rippil.com/backend_dev.php/」にリダイレクト
2月9日06:21:45symfony[情報]{sfWebDebugLogger}設定21.18ミリ秒(8)
2月9日06:21:45symfony[情報]{sfWebDebugLogger}ファクトリ162.69ミリ秒(1)
2月9日06:21:45symfony[情報]{sfWebDebugLogger}アクション"sfGuardAuth/ signin" 233.96ミリ秒(1)
2月9日06:21:45symfony[情報]{sfWebDebugLogger}データベース(Doctrine)0.03ミリ秒(7)
2月9日06:21:45symfony[情報]{sfWebResponse}コンテンツの送信(118 o)
Feb 09 06:21:46 symfony [info] {sfPatternRouting}ルート「ホームページ」(/)を/のパラメーター配列と一致させます('module' =>'reporttt'、'action' =>'index'、)
2月9日06:21:46symfony[情報]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日06:21:46symfony[情報]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日06:21:46symfony[info]{sfFilterChain}フィルター「sfBasicSecurityFilter」を実行しています
2月9日06:21:46symfony[info]{sfBasicSecurityFilter}アクション「report/index」には認証が必要です。「sfGuardAuth/signin」に転送します
2月9日06:21:46symfony[情報]{sfFilterChain}フィルター「sfRenderingFilter」を実行しています
2月9日06:21:46symfony[情報]{sfFilterChain}フィルター「sfGuardRememberMeFilter」を実行しています
2月9日06:21:46symfony[情報]{sfFilterChain}フィルター「sfExecutionFilter」を実行しています
2月9日06:21:46symfony[情報]{sfGuardAuthActions}「sfGuardAuthActions->executeSignin()」を呼び出す
2月9日06:21:46symfony[情報]{sfPHPView}レンダリング"/home/username/test.example.com/project/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php"
2月9日06:21:46symfony[info]{sfPartialView}レンダリング"/home/username/test.example.com/project/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/_signin_form.php"
2月9日06:21:46symfony[info]{sfPHPView}コンテンツを「/home/username/test.example.com/project/apps/backend/templates/layout.php」で飾ります
2月9日06:21:46symfony[情報]{sfPHPView}レンダリング"/home/username/test.example.com/project/apps/backend/templates/layout.php"
2月9日06:21:46symfony[情報]{sfWebDebugLogger}設定13.92ミリ秒(12)
2月9日06:21:46symfony[情報]{sfWebDebugLogger}ファクトリ251.75ミリ秒(1)
2月9日06:21:46symfony[情報]{sfWebDebugLogger}アクション"sfGuardAuth/ signin" 31.00 ms(1)
2月9日06:21:46symfony[情報]{sfWebDebugLogger}「sfGuardAuth/signin」の「成功」を表示57.79ミリ秒(1)
2月9日06:21:46symfony[情報]{sfWebDebugLogger}部分的な"sfGuardAuth/ _signin_form" 8.09ミリ秒(1)
2月9日06:21:46symfony[情報]{sfWebResponse}コンテンツの送信(52428 o)

おそらく、開発ではナビゲーション/_navMenu行を説明しているがテストでは説明していないbackend/templates/layout.phpからのこのスニペットに言及する価値があります。
<?php if ($sf_user->isAuthenticated()): ?>
    <?php include_component('navigation', 'navMenu'); ?>
    ...
 <?php endif ?>

symfony-usersグループの関連記事:

symfonyとapacheの両方のログを確認する必要があります。

ガブリエル

5月28日午後2時33分、sdwddは次のように書いています。

こんにちは、みんな。

Symfony 1.4のインストールにいくつか問題があります:
1。[無関係]
2。sfGuardプラグインに問題があります。
開発環境では問題なく動作しますが、ユーザーがログインした後のテスト環境ではセッションが失われます。ユーザーはログインしますが、ページをリロードすると認証セッションが失われます。

インストールは、sfGuardPluginといくつかのカスタムテンプレートを備えたコアSymfony1.4です。

それらについて何かアイデアはありますか?サーバー構成に問題があるように感じますが、何が間違っているのかわかりません(memory_limitを512Mbに上げました)。

ありがとう、
Serg

4

1 に答える 1

0

symfony-usersのGoogleグループからのヒントの後に答えを見つけました。

最初のヒント:

これは、サーバー上のセッションの問題のようです。セッション変数が保存されていない場合、認証ステータスを保存できません。セッション変数が機能しない理由を知るために、Dreamhostサポートに問い合わせる必要があります。

クリストフ| Stof

2番目のヒント:

これはsymfony関連の提案ではありません。
多くの場合、セッションの問題は、多くのUbuntuベースのホストに付属しているsuhosinモジュールが原因で発生していることがわかりました。セッション暗号化をオフにして、それが役立つかどうかを確認してください。たとえば、ドキュメントルートが暗号化の一部であり、常に期待どおりに機能するとは限らないことがわかりました。
HTH
よろしく、
Jochen Daum

私のホスティング環境では、問題の原因である可能性が高いsuhosin強化PHPを使用していることがわかりました。ソリューション検索にsuhosinを追加すると、oldforums.symfony-project.orgでこれが見つかりました。

Re:ユーザーセッションはUbuntuサーバーで持続しません[メッセージ#100928はメッセージ#100918への返信です]
2010年6月14日月曜日19:33dklanacこれ
が私の最後の投稿です。問題は自分のテスト環境にのみあることがわかりました。sfSessionTestStorageは、必要なCookieを設定していませんでした。これをsfSessionStorageに変更し、Cookieの名前を「test」サフィックスに変更して、本番Cookieの競合を防ぎ、適切に動作しました。これは、通常のsfSessionStorageクラスも使用するため、devインスタンスで正しい動作を確認できた理由も説明します。

開発、テスト、ステージング、本番用に別々のサブドメインを使用しているため、私のソリューションはさらにシンプルでした。apps / appname / config/factories.ymlでsfSessionTestStorageをsfSessionStorageに変更しました。クッキーの名前を変更する必要はないと思います。

于 2011-02-10T17:47:06.847 に答える