我正在使用 FOSUserBundle+FOSFacebookBundle 并且我试图在登录后使我的登录和注册页面无法访问。如果用户登录并正在访问这些页面之一,他应该被重定向到防火墙的 default_target_path 中定义的页面。
问题是我不知道如何在控制器内部获取 default_target_path 。我正在使用
$request->getSession()->get('_security.target_path');
但它返回null。
这是我的 security.yml 文件:
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 }
有任何想法吗?
谢谢你。