我正在为我的客户使用 Symfony 5.2 中新的登录链接方法 [1]。他们应该只使用这种身份验证方法。但我也为我的管理员用户使用登录表单身份验证 [2]。
当未经身份验证的客户访问受限路径(在我的情况下为 /app)时,他/她会被重定向到表单登录而不是登录链接表单。当会话过期或他们访问(未经身份验证)受限区域内的书签链接时,也会出现这种情况。
如何为 /app 分别设置默认身份验证器。/行政?我想要这样的东西:
- 客户区 /app -> /login(登录链接验证器)
- 管理区 /admin -> /login-password(登录表单验证器)
我的 security.yaml 看起来像这样:
security:
encoders:
App\Entity\User:
algorithm: auto
enable_authenticator_manager: true
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: app_user_provider
guard:
authenticators:
- App\Security\LoginFormAuthenticator
login_link:
check_route: login_check
signature_properties: ['id']
max_uses: 1
logout:
path: app_logout
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/app, roles: ROLE_USER }
- { path: ^/, roles: PUBLIC_ACCESS }
[1] 登录链接方式:https
:
//symfony.com/doc/current/security/login_link.html [2] LoginFormAuthenticator:https ://symfony.com/doc/current/security/form_login_setup.html