Immer wenn ich absichtlich versuche, benutzerdefinierte Fehlerseiten zu versuchen, auf eine undefinierte Route zuzugreifen, antwortet der Server mit einem Fehler von 500. Logs sagen:Symfony 2.8 - Wie konfiguriere ich eine Firewall für eine beliebige URL?
request.CRITICAL: Exception ausgelöst, wenn eine Ausnahme (Symfony \ Component \ Security \ Core \ Exception \ AuthenticationCredentialsNotFoundException Handhabung: Das Token-Speicherung enthält keine Token-Authentifizierung Ein möglicher Grund sein kann, dass es keine. konfigurierte Firewall für diese URL.
Diese Ausnahme nach dem NotFoundException geworfen wird, damit die 500-Fehler. So habe ich versucht, herauszufinden, wie eine Firewall für jede URL konfigurieren und insbesondere für all jene, Wer bereits von einer Firewall behandelt wird, kann damit die Anmeldeinformationen tatsächlich bearbeiten ly gefunden werden. Ich kam auf diese UserBundle/Ressourcen/config/security.yml:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt))/
security: false
public:
pattern: ^/(contact/faq)$
anonymous: true
secure:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
login_path: fos_user_security_login
check_path: fos_user_security_check
use_forward: false
failure_path: null
default_target_path: /
remember_me: true
logout:
path: fos_user_security_logout
target: /
anonymous: true
remember_me:
secret: %secret%
name: whatev
lifetime: 31536000
path: /
remember_me_parameter: _remember_me
secure: true
always_remember_me: true
default:
anonymous: true
des Alles in meinem Haupt-Sicherheitsdatei importiert, die besteht aus:
imports:
- { resource: "@UserBundle/Resources/config/security.yml" }
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } # my try to match all routes...
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/administration/, role: ROLE_ADMIN }
- { path: ^/user$, role: IS_AUTHENTICATED_FULLY }
Hier ist meine error.html. Zweig unter app/Resources/TwigBundle/views/Ausnahme:
<!DOCTYPE html>
<html>
<head>
<meta charset="{{ _charset }}" />
<title>An Error Occurred: {{ status_text }}</title>
</head>
<body>
<h1>Oops! An Error Occurred</h1>
<h2>The server returned a "{{ status_code }} {{ status_text }}".</h2>
<div>
Something is broken. Please let us know what you were doing when this error occurred.
We will fix it as soon as possible. Sorry for any inconvenience caused.
</div>
</body>
</html>
Jeder Hinweis, wie Sie vorgehen?
Vielen Dank.
können Sie uns zeigen Sie Ihre 'error.twig' (oder was auch immer verwenden Sie für 404-Fehler) Vorlage? – Federkun
Ich weiß, dass es Probleme bei der Verwendung von is_granted() in Ansichten geben kann, aber ich bin nicht. Ich habe sie bearbeitet, um dir meine Ansicht zu zeigen. – Matt
haben Sie einen Ereignis-Listener erstellt, der 'AuthorizationChecker :: isGranted' verwendet und ausgelöst wird, bevor das Ereignis der Firewall registriert wird (Priorität <= 8)? – Federkun