私は Symfony 5.2 で顧客のために新しいログイン リンク メソッド [1] を使用しています。この認証方法のみを使用する必要があります。しかし、管理者ユーザーにはログインフォーム認証 [2] も使用しています。
認証されていない顧客が制限されたパス (私の場合は /app) にアクセスすると、ログイン リンク フォームではなくフォーム ログインにリダイレクトされます。これは、セッションが期限切れになった場合や、制限された領域内のブックマークされたリンクに (認証されずに) アクセスした場合にも当てはまります。
/app resp のデフォルトのオーセンティケータを設定するにはどうすればよいですか。/管理者? 私はこのようなものが欲しいです:
- カスタマーエリア /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