当我尝试执行两个不同的用户登录路径时,我需要帮助来解决错误。我想知道如何使用两个提供程序来验证两种类型的用户(管理员/商品)。
当我在 security.yaml 中使用两个提供程序时,我在 Symfony 中的错误如下所示:
没有为“api”防火墙上的“guard”监听器明确配置提供者是不明确的,因为注册的提供者不止一个。
注意:我正在使用 JWT 身份验证。
我的文件 security.yaml:
security:
encoders:
App\Entity\User:
algorithm: argon2i
App\Entity\Merch:
algorithm: argon2i
providers:
users_provider:
name: users_provider
entity:
class: App\Entity\User
property: username
merchs_provider:
name: merchs_provider
entity:
class: App\Entity\Merch
property: codeMerch
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_users:
pattern: ^/api/user/login
stateless: true
anonymous: true
provider: users_provider
context: my_context
json_login:
check_path: /api/user/login_check_user
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
login_merch:
pattern: ^/api/merch/login
stateless: true
anonymous: true
provider: merchs_provider
context: my_context
json_login:
check_path: /api/merch/login_check_merch
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
refresh:
pattern: ^/api/token/refresh
stateless: true
anonymous: true
api:
pattern: ^/api
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
main:
anonymous: true
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/validator, roles: ROLE_VALIDATOR }
- { path: ^/api/user/login, roles: ROLE_ADMIN }
- { path: ^/api/merch/login, roles: ROLE_MERCH }
- { path: ^/api/token/refresh, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
Run Code Online (Sandbox Code Playgroud)
Nic*_*ich 11
您有 2 个用户提供程序:
users_providermerchs_provider您的防火墙配置api防火墙没有配置哪一个要使用这个防火墙。
您需要为api防火墙显式配置提供程序以消除警告:
firewalls:
# [..]
api:
pattern: '^/api'
stateless: true
provider: 'users_provider'
guard:
authenticators:
- 'lexik_jwt_authentication.jwt_token_authenticator'
Run Code Online (Sandbox Code Playgroud)
使用链提供商允许用户和商家对 API 的组合访问。
providers:
# [..]
chain_provider:
chain:
providers: ['users_provider', 'merchs_provider']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5015 次 |
| 最近记录: |