Symfony json_login 不工作

Jul*_*nci 2 authentication json symfony symfony-3.3

我想尝试使用 Symfony 3.3 的新 json_login ..按照文档进行一个干净的项目..但防火墙完全忽略 json_login 部分。我收到一条错误消息,指出控制器未返回响应。

我正在下面粘贴我的 security.yml ..

security:
providers:
    db_provider:
        entity:
            class: IgsemAuthBundle:User
            property: email
role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_USER:        IS_AUTHENTICATED_ANONYMOUSLY
encoders:
    Igsem\AuthBundle\Entity\User:
        algorithm: bcrypt
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: ~
        provider: db_provider
        json_login:
            check_path: check
access_control:
    - { path: ^/secure, roles: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)

我还有一个带有注释的检查路线的控制器:

 /**
 * @Route("/check", name="check")
 */
public function checkAction(Request $request, AuthenticationUtils $authUtils)
{
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用路径、使用的名称以及相对路径登录或 /login 以及其他一些组合..al 具有相同的

谢谢您的帮助

Ste*_*veB 6

文档中没有明确提及这一点,但要使此配置起作用,您需要让请求指定"Content-Type": "application/json"标头。否则,请求只会传递到控制器,而不会被安全侦听器处理。

另外,无论是否是设计使然,您仍然希望实现控制器的响应,因为 - 至少在我的 Symfony 3.3.14 上 -Response并不是按照文档中所述创建的。因此,虽然用户经过身份验证(或因错误的凭据而出错),但我仍然需要Response自己设计(这对我来说没问题,至少我保留对响应格式/结构的控制)。