2

我想用 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)
{
}

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

谢谢您的帮助

4

2 回答 2

3

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

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

于 2017-12-14T12:31:00.013 回答
-1

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

于 2017-07-04T05:29:22.803 回答