FOSUserBundle logout mit prefix funktioniert nicht
Ich habe ein sehr seltsames problem mit symfony2 und die FOSUserBundle.
Kann ich Abmelden, mit /en/logout, aber nicht mit /nl/logout oder /fr/logout.
Wenn ich versuche die Abmeldung mit nl oder fr bekomme ich:
You must activate the logout in your security firewall configuration.
Obwohl ich es konfiguriert. Ich kann nicht scheinen, um wickeln Sie meinen Kopf, warum die /en/logout funktioniert und der rest nicht.
Dies ist mein code:
Sicherheit.yml
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
check_path: fos_user_security_check
default_target_path: /%locale%/login
always_use_default_target_path: true
failure_path: /%locale%/login
logout:
path: /%locale%/logout
target: homepage
anonymous: true
routing.yml
user bundle > FOS
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
requirements:
_locale: fr|nl|en
controller
class LoginController extends Controller {
/**
* @Route("{_locale}/logout-test", name="logout", defaults={"_locale"="en"} , requirements = {"_locale" = "fr|en|nl"})
* @Template()
*/
public function logoutAction()
{
$test = "";
#throw new \RuntimeException('You must activate the logout in your security firewall configuration.');
#return $this->redirect($this->generateUrl('homepage'));;
}
}
Kann mir jemand helfen, oder mir sagen, wo schauen Sie als Nächstes? Es wäre sehr geschätzt werden
- Haben Sie versucht, zu definieren, default_target_path wie /login , ohne locale?
- der login funktioniert einwandfrei, es ist das logout, das die Probleme verursacht
- Versuchen zu definieren, logout als Pfad: /logout$
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Konfigurationsdatei, die Sie brauchen, zu Strecken verwenden, anstelle von URLs. Wenn es beginnt mit einem "/" wird er behandelt, wie eine URL, sonst wird er behandelt, wie eine route. Wenn Sie Strecken verwenden, anstelle von URLs, die locale wird automatisch erledigt. Zum Beispiel, hier ist meine Sicherheit.yml-Konfiguration:
Lasse ich das für die Zukunft, zusätzlich zu @jfcartier Antwort:
In Fall müssen Sie eine benutzerdefinierte
logout
Pfad stattfos_user_security_logout
:... dann müssen Sie auch definieren, in
routing.yml
:Obwohl, stellen Sie sicher, dass es definiert wird, bevor
fos_user
- ansonsten wirst du die gleichen Fehler: müssen Sie Sie aktivieren den logout-in Ihrer firewall-Konfiguration.