1

これまでのところ、「TwigBundle」カスタム error404.html.twig ページは、次をスローするとプロダクション モードで正しく表示されます。

$this->createNotFoundException('whatevs');

ただし、「NotFoundHttpException」が Symfony によってスローされると (ルートが見つからない場合など)、「ルートが見つかりません」ページが実際に app_dev に表示され、「404 Not Found」と記載されますが、プロダクション モードでは空白が表示されるだけです。ページ...

Symfony のドキュメントによると、「createNotFoundException() メソッドは特別な NotFoundHttpException オブジェクトを作成し、最終的に Symfony 内で 404 HTTP レスポンスをトリガーする」ため、これは正常ではないようです。

では、なぜ同じ動作をしないのですか? 足りないものはありますか?

master ブランチを使用しています。

編集: これが私の security.yml ファイルです。私は FOSUserBundle と FOSFacebookBundle を使用しています:

security:
providers:
    chain_provider:
        chain:
            providers: [fos_userbundle, my_fos_facebook_provider]
    fos_userbundle:
        id: fos_user.user_manager
    my_fos_facebook_provider:
        id: my.facebook.user

encoders:
    "FOS\UserBundle\Model\UserInterface": sha512

firewalls:
    public:
        pattern:   ^/
        fos_facebook:
            app_url: "http://apps.facebook.com/***/"
            server_url: "http://localhost/facebookApp/"
            login_path: /login
            check_path: /checkFb
            default_target_path: /
            provider: chain_provider
        form_login:
            login_path: /login
            check_path: /login_check
            provider: chain_provider
            remember_me:   true
            csrf_provider: form.csrf_provider
        remember_me:
            key:           %secret%
        anonymous: true
        logout: true
    login:                                           
        pattern:   ^/(login$|register|resetting)  
        anonymous: true

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

access_control:
    - { path: ^/, role: [IS_AUTHENTICATED_ANONYMOUSLY] }
    - { path: ^/secured/, role: [IS_AUTHENTICATED_FULLY] } # This is the route secured with fos_facebook
    - { path: ^/facebook/,           role: [ROLE_FACEBOOK] }
4

2 に答える 2

0

同じ問題がありました。https://github.com/symfony/symfony/issues/5320を参照してください。エラーページまたは layout.html.twig で is_granted を呼び出している可能性があります。これを解決する方法については、Stof の回答をお読みください。

于 2012-08-23T07:19:22.873 に答える
0

https://github.com/symfony/symfony/issues/5320のストフごと:

「エラー ページで is_granted を呼び出さないようにします (または、app.user が null でない場合にのみ呼び出します。これは、トークンがない場合やトークンが匿名の場合に発生します)。問題は、ルーターが前に実行されることです。そのため、ルーターがルートに一致しないために例外をスローした場合、エラーページはファイアウォールの背後にありません (呼び出されていないため)。

于 2013-11-21T05:26:59.937 に答える