I'm using FOSUserBundle+FOSFacebookBundle and I'm trying to make my login and register page unaccesible after logging in. If the user logged in and is accesing one of these page he should be redirected to page defined in firewall's default_target_path.
The problem is that I don't know how to get default_target_path while inside an controller. I was using
$request->getSession()->get('_security.target_path');
but it returns null.
Here is my security.yml file:
jms_security_extra:
secure_all_services: false
expressions: true
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
chainprovider:
chain:
providers: [ fos_userbundle, fos_facebookbundle]
fos_userbundle:
id: fos_user.user_provider.username
fos_facebookbundle:
id: fos_facebookbundle
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: /
fos_facebook:
app_url: "FB_APP_URL"
server_url: "APP_URL"
login_path: /login
check_path: /login_fb_check
default_target_path: /
provider: fos_facebookbundle
logout: true
anonymous: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js|font)/
security: false
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
Any ideas?
Thank you.
Set:
firewalls:
main:
pattern: ^/
form_login:
# ...
default_target_path: %target_path%
target_path set in parameters.yml
parameters:
# ...
target_path: /
# ...
and than get value by:
$this->container->getParameter('target_path');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With