我正在尝试使用其他用户的角色来管理前端和后端。在security.yml内部添加了此
security:
providers:
admin:
entity:
class: LoginBundle:Usuarios
property: mail
external:
entity:
class: LoginBundle:UsuariosExternos
property: mail
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
provider: admin
form_login:
login_path: /
logout:
path: logout
target: /
access_denied_url: /eu/
external:
anonymous: true
provider: external
form_login:
login_path: /
logout:
path: logoutExternalUser
target: /
使用此编码解码器时,外部防火墙不起作用,当我作为外部(前端)登录时,注销路径为/ logout而不是logoutExternalUser。 同样使用此配置,如果我写路径/ admin,它将转到/而不是/ admin / login 我们尝试使用AccessDeniedHandlerInterface,但我们不知道如何在该实例中获取用户角色。
有帮助吗?
答案 0 :(得分:3)
您缺少模式。这就是为什么防火墙没有启动。
您应该设置其监听的模式。
检查,我更新了代码。
security:
providers:
admin:
entity:
class: LoginBundle:Usuarios # idk if you realized this correctly
property: mail
external:
entity:
class: LoginBundle:UsuariosExternos
property: mail
firewalls:
admin:
pattern: ^/admin # pattern in which this will activate
anonymous: true
provider: admin
form_login:
login_path: adminLogin # implement route
logout:
path: security_logout # should work and destroy session
target: /
access_denied_url: /eu/
external:
pattern: ^/external
anonymous: true
provider: external
form_login:
login_path: loginExternal # implement route
logout:
path: security_logout
target: /
我建议您检查https://symfony.com/doc/3.4/security/guard_authentication.html
如果默认安全性对您不起作用,这是一种构建所需身份验证的好方法。