Symfony 5:授权多个守卫和不同的提供者
Symfony 5: Auth Multiple Guards and Different Providers
我正在努力使用 Symfony 的保护身份验证系统 API,它似乎无法按照我的需要工作。
是否可以使用多个身份验证器和不同的提供商?
我需要灵活性,以便用户可以通过两种方式针对相同的端点进行身份验证。
我的防火墙目前是:
api:
pattern: ^/
stateless: true
provider: jwt
guard:
authenticators:
- App\Security\InviteCodeAuthenticator
- lexik_jwt_authentication.jwt_token_authenticator
entry_point: App\Security\InviteCodeAuthenticator
JWT 和邀请码需要完全不同的用户提供者。如果我为每个创建一个不同的防火墙,那么我有相同的 URL 受不同的防火墙保护,我需要它来使用。
我正在努力尝试让这个现在工作,我觉得我遗漏了一些明显的东西。
对于可能遇到此问题的任何其他人,我必须使用 Symfony 的新实验性身份验证系统才能使其正常工作:
然后使用混合防火墙:
api:
pattern: ^/
stateless: true
provider: jwt
entry_point: App\Security\InviteCodeAuthenticator
custom_authenticators:
- App\Security\InviteCodeAuthenticator
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
这允许我的邀请码验证器检查有效邀请码的请求,并允许回退以期待 JWT 的身份验证或失败。
我正在努力使用 Symfony 的保护身份验证系统 API,它似乎无法按照我的需要工作。
是否可以使用多个身份验证器和不同的提供商?
我需要灵活性,以便用户可以通过两种方式针对相同的端点进行身份验证。
我的防火墙目前是:
api:
pattern: ^/
stateless: true
provider: jwt
guard:
authenticators:
- App\Security\InviteCodeAuthenticator
- lexik_jwt_authentication.jwt_token_authenticator
entry_point: App\Security\InviteCodeAuthenticator
JWT 和邀请码需要完全不同的用户提供者。如果我为每个创建一个不同的防火墙,那么我有相同的 URL 受不同的防火墙保护,我需要它来使用。
我正在努力尝试让这个现在工作,我觉得我遗漏了一些明显的东西。
对于可能遇到此问题的任何其他人,我必须使用 Symfony 的新实验性身份验证系统才能使其正常工作:
然后使用混合防火墙:
api:
pattern: ^/
stateless: true
provider: jwt
entry_point: App\Security\InviteCodeAuthenticator
custom_authenticators:
- App\Security\InviteCodeAuthenticator
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
这允许我的邀请码验证器检查有效邀请码的请求,并允许回退以期待 JWT 的身份验证或失败。