Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 3使用2个防护认证器_Symfony_Authentication - Fatal编程技术网

Symfony 3使用2个防护认证器

Symfony 3使用2个防护认证器,symfony,authentication,Symfony,Authentication,我正在应用程序中使用guard身份验证。我有两种不同的方式登录2个不同的警卫认证。 我的安全设置如下所示: firewalls: login: pattern: /(login|api.*)$ anonymous: ~ autolog: pattern: /(autolog.*)$ anonymous: ~ guard: authenticators:

我正在应用程序中使用guard身份验证。我有两种不同的方式登录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_验证器工作正常。但是当我使用autolog时,用户完全与autolog\u验证器登录,但随后它进入拒绝连接的令牌\u验证器。
我如何告诉应用程序只使用自动身份验证程序而不使用令牌身份验证程序?

这看起来并不理想

pattern: /(login|api.*)$
尝试仅使用令牌保护您的api区域

这里看一下这个实现示例


您可能需要的另一个关键字是
入口点
,它定义了什么样的身份验证具有更高的优先级

我终于找到了我可以做的事情。 我只是对每个守卫使用了相同的上下文。我是这样用的

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