Symfony 3使用2卫士验证器

时间:2017-04-11 10:58:59

标签: symfony authentication

我在我的应用程序中使用带有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?

2 个答案:

答案 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