我有以下" security.yml"配置和成功登录成为"成员"我被重定向到" administration_index"。
我想要实现的是重定向" root"用户到" administration_index"和普通用户("成员")到" members_index"。
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_MEMBER: ROLE_USER
ROLE_ROOT: ROLE_ALLOWED_TO_SWITCH
providers:
chain_provider:
chain:
providers: [in_memory, users]
in_memory:
memory:
users:
root: { password: 3Qbg9rthce5, roles: 'ROLE_ROOT' }
member: { password: 3Qbg9rthce5, roles: 'ROLE_MEMBER' }
firewalls:
administration:
pattern: ^/administration
form_login:
login_path: login
check_path: login_check
csrf_provider: form.csrf_provider
default_target_path: administration_index
always_use_default_target_path: false
logout:
...
members:
pattern: ^/secured
form_login:
login_path: login
check_path: login_check
csrf_provider: form.csrf_provider
default_target_path: members_index
always_use_default_target_path: false
logout:
...
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/administration, roles: ROLE_ROOT}
- { path: ^/administration/users, roles: ROLE_ROOT}
- { path: ^/secured, roles: ROLE_MEMBER }
谢谢!
答案 0 :(得分:0)
我想你想这样做:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_MEMBER: ROLE_USER
ROLE_ROOT: ROLE_ALLOWED_TO_SWITCH
providers:
chain_provider:
chain:
providers: [in_memory, users]
in_memory:
memory:
users:
root: { password: 3Qbg9rthce5, roles: 'ROLE_ROOT' }
member: { password: 3Qbg9rthce5, roles: 'ROLE_MEMBER' }
firewalls:
administration:
pattern: ^/
form_login:
login_path: login
check_path: login_check
csrf_provider: form.csrf_provider
default_target_path: common_index
always_use_default_target_path: false
logout:
...
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/administration, roles: ROLE_ROOT}
- { path: ^/secured, roles: ROLE_MEMBER }
然后,在你的common_index
控制器中,你可以做类似的事情(我假设你的标准控制器继承自框架包的控制器):
if ($this
->get('security.context')
->getToken()
->getUser()
->hasRole('ROLE_ROOT')) {
return $this->forward('administration_index');
}
return $this->forward('members_index');
如果您认为这是重定向,则可以使用redirect
代替forward
。