Angularjs LexikJWTBundle:未找到用于POST/api/login\u检查的路由

Angularjs LexikJWTBundle:未找到用于POST/api/login\u检查的路由,angularjs,symfony,Angularjs,Symfony,我正在使用LexikJWTBundle对一个ionic angularjs应用程序和一个symfony2REST API进行身份验证 我的问题是,当我尝试对用户进行身份验证时,Symfony返回:找不到POST/api/login\u检查的路由 编辑 我已将路由放在rest路由文件中,因此生成的路由为/api/api/login\u check。 现在错误是:找不到路径“/api/login\u check”的控制器。 看起来LexikJWTBundle没有拦截呼叫。 结束编辑 我明确表示,我的

我正在使用LexikJWTBundle对一个ionic angularjs应用程序和一个symfony2REST API进行身份验证

我的问题是,当我尝试对用户进行身份验证时,Symfony返回:找不到POST/api/login\u检查的路由

编辑 我已将路由放在rest路由文件中,因此生成的路由为/api/api/login\u check。 现在错误是:找不到路径“/api/login\u check”的控制器。 看起来LexikJWTBundle没有拦截呼叫。 结束编辑

我明确表示,我的api在没有身份验证的情况下运行良好,并且通过NelmioCorsBundle使用CORS

这是我的routing.yml部分:

api_login_check:
    path: /api/login_check
这是我的config.yml

lexik_jwt_authentication:
    private_key_path: %kernel.root_dir%/var/jwt/private.pem   # ssh private key path
    public_key_path:  %kernel.root_dir%/var/jwt/public.pem    # ssh public key path
    pass_phrase:      'passphrase'                                      # ssh key pass phrase
    token_ttl:        86400                                   # token ttl - defaults to 86400
这是我的保安。yml:

# app/config/security.yml
security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email


    firewalls:
        dev:
            pattern: ^/{_{profiler|wdt}}/
            security: false
            switch_user: true
        main:
            pattern: .*
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            switch_user: true
#       JWT SETUP
        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            form_login:
                check_path:               /api/login_check
                username_parameter: username
                password_parameter: password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
                require_previous_session: false
#       JWT SETUP
        api:
            pattern:   ^/api
            stateless: true
            lexik_jwt:
                authorization_header:
                    enabled: true
                    prefix:  Bearer
                query_parameter:
                    enabled: true
                    name:    bearer

    access_control:
#        JWT SETUP
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

要使表单登录工作,您需要创建
检查路径
路由。路由必须指向一个空的控制器,并被安全系统拦截

只需为
/api/login\u check
创建一个空控制器,并将
api\u login\u check
路由指向它

这些信息在下面的文档中


要使表单登录生效,您需要创建
检查路径
路由。路由必须指向一个空的控制器,并被安全系统拦截

只需为
/api/login\u check
创建一个空控制器,并将
api\u login\u check
路由指向它

这些信息在下面的文档中


要使表单登录生效,您需要创建
检查路径
路由。路由必须指向一个空的控制器,并被安全系统拦截

只需为
/api/login\u check
创建一个空控制器,并将
api\u login\u check
路由指向它

这些信息在下面的文档中


要使表单登录生效,您需要创建
检查路径
路由。路由必须指向一个空的控制器,并被安全系统拦截

只需为
/api/login\u check
创建一个空控制器,并将
api\u login\u check
路由指向它

这些信息在下面的文档中


好的,我发现了问题:主防火墙应该位于末端,因为所有路由都采用这种模式,因此阻止通过其他防火墙。 又犯了愚蠢的错误

谢谢@keyboardSmaher的帮助

现在security.yml如下所示:

# app/config/security.yml
security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email


    firewalls:
        dev:
            pattern: ^/{_{profiler|wdt}}/
            security: false
            switch_user: true
        api_login:
            pattern:    ^/api/login
            stateless:  true
            anonymous:  true
            provider:   fos_userbundle
            form_login:
                check_path:               api_login_check
                require_previous_session: false
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        api:
            pattern:    ^/api
            stateless:  true
            provider:   fos_userbundle
            lexik_jwt: ~
        main:
            pattern: .*
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            switch_user:  true


#       JWT SETUP
#       JWT SETUP


    role_hierarchy:
        ROLE_DELEGATION:        [ROLE_USER]
        ROLE_EXPORT:            [ROLE_USER]
        ROLE_USER_ADMIN:        [ROLE_USER]
        ROLE_LIST_ADMIN:        [ROLE_USER]
        ROLE_IMPORT:            [ROLE_USER]
        ROLE_MOBILE:            [ROLE_USER]
        ROLE_ADMIN:             [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
        ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/$, role: ROLE_USER}
#        - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/contacts, role: ROLE_USER }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/entites, role: ROLE_USER }
        - { path: ^/export, role: ROLE_EXPORT }
        - { path: ^/titres, roles: ROLE_ADMIN }
        - { path: ^/categories, roles: ROLE_ADMIN }
        - { path: ^/services, roles: ROLE_ADMIN }
        - { path: ^/groupes, roles: ROLE_ADMIN }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/imports, roles: ROLE_IMPORT }
        - { path: ^/utilisateurs, roles: ROLE_USER_ADMIN }
        - { path: ^/register, role: ROLE_SUPER_ADMIN }
        - { path: ^/group, roles: ROLE_USER_ADMIN }
#        JWT SETUP
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

好的,我发现了问题:主防火墙应该位于末端,因为所有的路由都采用这种模式,因此防止通过其他防火墙。 又犯了愚蠢的错误

谢谢@keyboardSmaher的帮助

现在security.yml如下所示:

# app/config/security.yml
security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email


    firewalls:
        dev:
            pattern: ^/{_{profiler|wdt}}/
            security: false
            switch_user: true
        api_login:
            pattern:    ^/api/login
            stateless:  true
            anonymous:  true
            provider:   fos_userbundle
            form_login:
                check_path:               api_login_check
                require_previous_session: false
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        api:
            pattern:    ^/api
            stateless:  true
            provider:   fos_userbundle
            lexik_jwt: ~
        main:
            pattern: .*
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            switch_user:  true


#       JWT SETUP
#       JWT SETUP


    role_hierarchy:
        ROLE_DELEGATION:        [ROLE_USER]
        ROLE_EXPORT:            [ROLE_USER]
        ROLE_USER_ADMIN:        [ROLE_USER]
        ROLE_LIST_ADMIN:        [ROLE_USER]
        ROLE_IMPORT:            [ROLE_USER]
        ROLE_MOBILE:            [ROLE_USER]
        ROLE_ADMIN:             [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
        ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/$, role: ROLE_USER}
#        - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/contacts, role: ROLE_USER }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/entites, role: ROLE_USER }
        - { path: ^/export, role: ROLE_EXPORT }
        - { path: ^/titres, roles: ROLE_ADMIN }
        - { path: ^/categories, roles: ROLE_ADMIN }
        - { path: ^/services, roles: ROLE_ADMIN }
        - { path: ^/groupes, roles: ROLE_ADMIN }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/imports, roles: ROLE_IMPORT }
        - { path: ^/utilisateurs, roles: ROLE_USER_ADMIN }
        - { path: ^/register, role: ROLE_SUPER_ADMIN }
        - { path: ^/group, roles: ROLE_USER_ADMIN }
#        JWT SETUP
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

好的,我发现了问题:主防火墙应该位于末端,因为所有的路由都采用这种模式,因此防止通过其他防火墙。 又犯了愚蠢的错误

谢谢@keyboardSmaher的帮助

现在security.yml如下所示:

# app/config/security.yml
security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email


    firewalls:
        dev:
            pattern: ^/{_{profiler|wdt}}/
            security: false
            switch_user: true
        api_login:
            pattern:    ^/api/login
            stateless:  true
            anonymous:  true
            provider:   fos_userbundle
            form_login:
                check_path:               api_login_check
                require_previous_session: false
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        api:
            pattern:    ^/api
            stateless:  true
            provider:   fos_userbundle
            lexik_jwt: ~
        main:
            pattern: .*
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            switch_user:  true


#       JWT SETUP
#       JWT SETUP


    role_hierarchy:
        ROLE_DELEGATION:        [ROLE_USER]
        ROLE_EXPORT:            [ROLE_USER]
        ROLE_USER_ADMIN:        [ROLE_USER]
        ROLE_LIST_ADMIN:        [ROLE_USER]
        ROLE_IMPORT:            [ROLE_USER]
        ROLE_MOBILE:            [ROLE_USER]
        ROLE_ADMIN:             [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
        ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/$, role: ROLE_USER}
#        - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/contacts, role: ROLE_USER }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/entites, role: ROLE_USER }
        - { path: ^/export, role: ROLE_EXPORT }
        - { path: ^/titres, roles: ROLE_ADMIN }
        - { path: ^/categories, roles: ROLE_ADMIN }
        - { path: ^/services, roles: ROLE_ADMIN }
        - { path: ^/groupes, roles: ROLE_ADMIN }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/imports, roles: ROLE_IMPORT }
        - { path: ^/utilisateurs, roles: ROLE_USER_ADMIN }
        - { path: ^/register, role: ROLE_SUPER_ADMIN }
        - { path: ^/group, roles: ROLE_USER_ADMIN }
#        JWT SETUP
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

好的,我发现了问题:主防火墙应该位于末端,因为所有的路由都采用这种模式,因此防止通过其他防火墙。 又犯了愚蠢的错误

谢谢@keyboardSmaher的帮助

现在security.yml如下所示:

# app/config/security.yml
security:

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email


    firewalls:
        dev:
            pattern: ^/{_{profiler|wdt}}/
            security: false
            switch_user: true
        api_login:
            pattern:    ^/api/login
            stateless:  true
            anonymous:  true
            provider:   fos_userbundle
            form_login:
                check_path:               api_login_check
                require_previous_session: false
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        api:
            pattern:    ^/api
            stateless:  true
            provider:   fos_userbundle
            lexik_jwt: ~
        main:
            pattern: .*
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
            switch_user:  true


#       JWT SETUP
#       JWT SETUP


    role_hierarchy:
        ROLE_DELEGATION:        [ROLE_USER]
        ROLE_EXPORT:            [ROLE_USER]
        ROLE_USER_ADMIN:        [ROLE_USER]
        ROLE_LIST_ADMIN:        [ROLE_USER]
        ROLE_IMPORT:            [ROLE_USER]
        ROLE_MOBILE:            [ROLE_USER]
        ROLE_ADMIN:             [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
        ROLE_SUPER_ADMIN:       [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

    access_control:
        - { path: ^/$, role: ROLE_USER}
#        - { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/contacts, role: ROLE_USER }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/entites, role: ROLE_USER }
        - { path: ^/export, role: ROLE_EXPORT }
        - { path: ^/titres, roles: ROLE_ADMIN }
        - { path: ^/categories, roles: ROLE_ADMIN }
        - { path: ^/services, roles: ROLE_ADMIN }
        - { path: ^/groupes, roles: ROLE_ADMIN }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/imports, roles: ROLE_IMPORT }
        - { path: ^/utilisateurs, roles: ROLE_USER_ADMIN }
        - { path: ^/register, role: ROLE_SUPER_ADMIN }
        - { path: ^/group, roles: ROLE_USER_ADMIN }
#        JWT SETUP
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }


如上所示,中的路线是根据文档和中的演示创建的。我通过FOSUserBundle进行的身份验证工作正常。我的问题与通过lexikjwtbundle进行授权有关,该捆绑包应提供JWT。@curuba创建一个空控制器,并将您的
api\u登录\u检查指向它。
。Hi@keyboardSmasher和thx非常感谢您的帮助。这就是我用
返回新响应(“”,401)所做的。现在,当我使用凭据卷曲时,我收到一个401响应,它似乎表明LexikJWTBundle没有拦截请求。。。我可能错过了什么。是否应在另一个文件中通知此路由?@curuba
/api/login\u check
路由的控制器应为空,没有任何
返回
语句。你试过了吗?是的。正如我在下面的回答中所解释的,这个问题与防火墙的错误排序有关。谢谢如上所示,中的路线是根据文档和中的演示创建的。我通过FOSUserBundle进行的身份验证工作正常。我的问题与通过lexikjwtbundle进行授权有关,该捆绑包应提供JWT。@curuba创建一个空控制器,并将您的
api\u登录\u检查指向它。
。Hi@keyboardSmasher和thx非常感谢您的帮助。这就是我用
返回新响应(“”,401)所做的。现在,当我使用凭据卷曲时,我收到一个401响应,它似乎表明LexikJWTBundle没有拦截请求。。。我可能错过了什么。是否应在另一个文件中通知此路由?@curuba
/api/login\u check
路由的控制器应为空,没有任何
返回
语句。你试过了吗?是的。正如我在下面的回答中所解释的,这个问题与防火墙的错误排序有关。谢谢如上所示,中的路线是根据文档和中的演示创建的。我通过FOSUserBundle进行的身份验证工作正常。我的问题与通过lexikjwtbundle进行授权有关,该捆绑包应提供JWT。@curuba创建一个空控制器,并将您的
api\u登录\u检查指向它。
。Hi@keyboardSmasher和thx非常感谢您的帮助。这就是我用
返回新响应(“”,401)所做的。现在,当我使用凭据卷曲时,我收到一个401响应,它似乎表明LexikJWTBundle没有拦截请求。。。我可能错过了什么。是否应在另一个文件中通知此路由?@curuba
/api/login\u check
路由的控制器应为空,没有任何
返回
语句。有你