Symfony json_login无效

时间:2017-06-29 16:40:18

标签: json symfony login 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 }

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

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

我尝试使用路径,使用名称,但也使用相对路径登录或/登录和其他一些组合..具有相同的

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

文档中没有明确提及,但要使此配置生效,您需要请求指定"Content-Type": "application/json"标头。否则,请求只会传递给控制器​​,而不会被安全监听器处理。

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

答案 1 :(得分:-1)

在没有更新Symfony文档之前,json_login选项需要一个success_handler和一个failure_handler。否则它会抛出一个错误..仅仅定义目标路由是不够的..我已经提出了一个PR应该是很快就修好了