1

Symfony 2.3 を使用していますが、本番サーバーで問題が発生しています。

(いつもではありませんが) 実稼働環境ですべての AJAX 要求が失敗する (どのような機会があるかわかりませんでした) ことが起こります。prod.log には次のものがあります。

security.INFO: Populated SecurityContext with an anonymous Token [] []
[2013-08-08 16:03:28] security.INFO: No expression found; abstaining from voting. [] []
[2013-08-08 16:03:28] security.DEBUG: Access is denied (user is not fully authenticated)      by  "/var/www/clients/client1/web1/web/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php" at line 73; redirecting to authentication entry point

私が製品環境にいて、(ajax エラーの後) ページを更新しても、何も起こりません。まだログインしていますが、ajax は同じエラーで失敗します。app_dev.php に切り替えると、エラーが消えて AJAX が機能します。

(ajax ルートは game/* パターンの下にあります)

ここに私の設定:

jms_security_extra:
secure_all_services: false
expressions: true

security:
    encoders:
        Gdr\UserBundle\Entity\User: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    database:
        entity: { class: GdrUserBundle:User, property: email }

firewalls:
    secured_area:
        pattern:    ^/
        form_login:
            check_path: /login_check
            login_path: /login
            success_handler: authentication_handler
        logout:
            path:   /logout
            target: /
            success_handler: authentication_handler
            invalidate_session: true
        anonymous: ~

access_control:
    - { path: /game/*, roles: ROLE_USER }
    - { path: /login/choose-character, roles: ROLE_USER }
    - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: /logout, roles: ROLE_USER }
    - { path: /admin/*, roles: ROLE_ADMIN }

######Config.yml
framework:
session:
    cookie_lifetime: 0
    save_path: "%kernel.root_dir%/Sessions/"
    cookie_httponly: false
   # save_path: ~

firebug でログに記録するすべての ajax リクエストは、302 ヘッダーを送信してログインにリダイレクトします。URLにAJAXなしでアクセスしようとすると、うまくいきます。302 コードはありません。

何か案が?

4

1 に答える 1

0

問題が見つかりました。

問題は、「www」を含む絶対 URL、つまり www.mydomain.com を使用していたのに、Cookie ホストに「www」が含まれていなかったことです。

相対 URL を使用しても問題ありません。皆さんありがとう :)

最後に、ここで私の解決策を見つけました:Symfony、jQuery.ajax()呼び出し、セッション変数が失われました

于 2013-08-08T17:49:33.513 に答える