我使用symfony2和FOS UserBundle。
我已经关注了来自https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md
的FOSUSerBundle文档,但如果我要访问特定页面,则没有重定向。
我的意思是,当我输入http/myapp/login
但我没有时,我必须被重定向到http/myapp/myspecificPage/toto
。即使我没有登录我的应用程序。
我的NamespaceLoginBundle扩展到FOSUser。
此处我的文件routing.yml
:
login:
pattern: /login
defaults: { _controller: NamespaceLoginBundle:Welcome:login }
login_check:
pattern: /login_check
defaults: { _controller: NamespaceLoginBundle:Welcome:checkUser }
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /change-password
和security.yml
security:
providers:
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
logout: true
anonymous: true
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
access_control:
# Liste des pages accessibles à tous les utilisateurs (ne pas toucher)
- { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/js/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/css/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resseting$, role: IS_AUTHENTICATED_ANONYMOUSLY }
# PAGES ACCESSIBLES AUX ADMINISTRATEURS
- { path: ^/admin/, role: ROLE_ADMIN }
# PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES
- { path: ^/change-password, role: ROLE_USER }
# PAGES ACCESSIBLES A TOUS
- { path: ^.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
acl:
connection: default
我尝试了一些修改但不起作用。
请帮助。
见你
萨姆
答案 0 :(得分:1)
您需要指定角色
- { path: ^/.*, role: [IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_FULLY] }
其中:
IS_AUTHENTICATED_FULLY通过输入登录名和密码进行身份验证,IS_AUTHENTICATED_REMEMBERED是在上次登录时选择“记住我”的用户
答案 1 :(得分:0)
您需要设置access_role
以便仅在登录页面上允许匿名用户:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }