20

フォルダ内の特定のHTTPエラーを表示するカスタムエラーページを設定しました。

app/Resources/TwigBundle/views/Exception/

403ページ(error403.html.twig)は期待どおりに機能し、表示されます。

500ページ(error500.html.twig)は期待どおりに機能し、表示されます。

404ページ(error404.html.twig)は500サーバーエラーをスローします。

PHPの致命的なエラー:キャッチされない例外'Symfony \ Component \ Routing \ Exception \ ResourceNotFoundException'

認証されている、または認証されていないユーザーの特定のメニュー項目を表示するために認証チェックを実行すると、エラーがスローされます。

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

そのチェックを外し、すべてのメニュー項目の表示を許可すると、ページは期待どおりにエラーページをロードします。繰り返しになりますが、403ページは正常に表示され、問題なく認証チェックを利用します。

私はこれで立ち往生しています。ファイル名を除けば、ページはまったく同じです。

4

3 に答える 3

16

symfony <2.8の場合:

{% if app.user is not null and is_granted('ROLE_ADMIN') %}

参照:https ://github.com/symfony/symfony-docs/issues/2078

2015年12月17日から編集:

これは2.8以降は不要になりました。

{% if is_granted('ROLE_ADMIN') %}

現在は正常に動作しています。

ソース:http ://symfony.com/blog/new-in-symfony-2-8-dx-improvements#allow-to-check-for-security-even-in-pages-not-covered-by-firewalls

于 2013-02-04T15:25:01.013 に答える
12

is_granted2.1以降、404ページでを使用することはできません。

アップグレードファイルに記載されています

これで、ファイアウォールリスナーがルーターリスナーの後に登録されます。つまり、特定のファイアウォールURL(/login_checkや/logoutなど)には、ルーティング構成で適切なルートが定義されている必要があります。また、カスタム404エラーページがある場合は、そのようなセキュリティ関連の機能を使用しないようにis_grantedしてください。

参照: https ://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md#security

于 2012-09-28T16:44:58.447 に答える
2

ユーザーが匿名の場合でも、app.security.tokenより厳密にチェックして評価することをお勧めします。true

チェックすると、例外テンプレートでapp.user評価されますが、ファイアウォール存在する場合でも(=通常のテンプレート)、ユーザーはログに記録されません。これにより、たとえば、ログインボタンの表示が防止されます。false

参照:https ://github.com/symfony/symfony-docs/pull/2359

于 2014-07-30T08:44:48.263 に答える