Symfony - 404 всегда перенаправляет на страницу входа вместо отображения пользовательской страницы 404 - PullRequest
1 голос
/ 14 июня 2011

Я столкнулся с довольно странной проблемой.

По умолчанию все мое приложение защищено (в файле apps / frontend / config / security.yml)

В моих настройкахУ меня есть (удален токен csrf, check_lock и т. Д., Поскольку это не имеет значения):

all:
  .settings:
    error_404_module: user
    error_404_action: 404
    use_security: on
    login_module: user
    login_action: login

В файле security.yml модуля пользователя у меня есть:

404Success:
  is_secure: false

В разработке, если яперейдите по недопустимому URL-адресу, я получу стандартную страницу отладки Symfony, говорящую:

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL

"/ blahblahfhfjhjdhdshdus" (/).

Однако в производстве, Мне будет предоставлена ​​страница входа для каждого неверного URL.

Я просто хочу отобразить свою пользовательскую страницу ошибки 404.

Я заглянул в PHPЖурналы ошибок, вот что мне представлено:

> [Tue Jun 14 17:10:54 2011] [error]
> [client 129.42.32.32] Empty module
> and/or action after parsing the URL
> "//blahblahfhfjhjdhdshdus" (/). [Tue
> Jun 14 17:10:54 2011] [error] [client
> 129.42.32.32] PHP Fatal error:  Uncaught exception 'sfStopException'
> in
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php:96\nStack
> trace:\n#0
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php(55):
> sfBasicSecurityFilter->forwardToLoginAction()\n#1
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(1026):
> sfBasicSecurityFilter->execute(Object(sfFilterChain))\n#2
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(990):
> sfFilterChain->execute()\n#3
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(1026):
> sfRenderingFilter->execute(Object(sfFilterChain))\n#4
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(660):
> sfFilterChain->execute()\n#5
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/exception/sfError404Exception.class.php(49):
> sfController->forward('user', 404)\n#6
> /srv/www/foo.bar/c in
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php
> on line 96

Как вы можете, фильтр безопасности перехватывает (неверный выбор слова) действие 404, даже если я переопределил глобальную безопасность.yml для этого действия.

Есть идеи?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 14 июня 2011

Проблема в том, что действие 404 , а не 404Success.Попробуйте

404:
  is_secure: false

success - это возвращаемое представление по умолчанию для symfony.

1 голос
/ 11 октября 2012

При использовании Symfony 404 по умолчанию - это работало для меня (ошибки перестали отображаться в журнале ошибок Apache)

  1. Создать папку "apps / frontend / modules / default / config"
  2. Создать «settings.yml»
  3. Добавить следующие строки:

    error404:
      is_secure: false
    
0 голосов
/ 14 июня 2011

Нашли решение:

Немного странно, но это сработало.

В моем пользователе security.yml мне пришлось изменить это:

404Success:
  is_secure: false

к этому:

all:
  is_secure: false

Это на самом деле не проблема, так как у меня есть только логин и действия 404 в пользовательском модуле .... но я удивлен, что мне пришлось отключить защиту всего модуля, а не просто отключить защиту на 404 действие. Не совсем уверен, почему он игнорировал «404Success». Странно ....

...