我在我的应用程序中使用带有guard的身份验证。我有2种不同的方式登录2个不同的保护身份验证器。 我的安全性如下:
firewalls:
login:
pattern: /(login|api.*)$
anonymous: ~
autolog:
pattern: /(autolog.*)$
anonymous: ~
guard:
authenticators:
- app.autolog_authenticator
main:
logout:
invalidate_session: true
path: /%locale%/logout
target: /%locale%/login
guard:
authenticators:
- app.token_authenticator
token_authenticator工作正常。但是当我使用autolog时,用户完全使用autolog_authenticator进行日志记录,但随后它会进入拒绝连接的token_authenticator。 如何告诉应用程序仅使用autolog_authenticator并且不要转到token_authenticator?
答案 0 :(得分:0)
这看起来并不是最佳的
pattern: /(login|api.*)$
尝试仅使用令牌保护您的api区域
在这里查看此实施示例https://github.com/knpuniversity/guard-presentation/blob/finished/app/config/security.yml
您可能需要的另一个关键字是entrypoint
,它定义了哪种身份验证具有更高的优先级
答案 1 :(得分:0)
我终于找到了自己的能力。 我只是为每个守卫使用相同的上下文。我像这样使用它
firewalls:
login:
pattern: /(login|api.*)$
anonymous: ~
autolog:
pattern: /(autolog.*)$
context : primary_auth
anonymous: ~
guard:
authenticators:
- app.autolog_authenticator
main:
context : primary_auth
logout:
invalidate_session: true
path: /%locale%/logout
target: /%locale%/login
guard:
authenticators:
- app.token_authenticator