Symfony2:无法找到路径“/ api / login_check”的控制器。路由配置错误

时间:2016-01-19 23:35:19

标签: php symfony

当我在开发环境中时,一切正常,我的登录工作正常,但是当我将我的应用程序放入服务器并将环境更改为prod时,我收到此错误

  

Symfony2:无法找到路径“/ api / login_check”的控制器。路由配置错误。

我知道这个问题在形式上是非常愚蠢的但是我看了所有的回答并尝试解决这个问题,但没有人为我工作。

这是我的security.yml

security:
    encoders:
            Project\MyBundle\Entity\User: sha512

    role_hierarchy:
            ROLE_USER:     ROLE_USER
            ROLE_ADMIN:    ROLE_ADMIN
    providers:
        in_memory:
            memory: ~
        user:
            entity:
                class: MyBundle:User
                property: username

    firewalls:

        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login:
             pattern:  ^/api/login
             stateless: true
             anonymous: true
             form_login:
                 check_path: /api/login_check
                 provider: user
                 success_handler:         lexik_jwt_authentication.handler.authentication_success
                 failure_handler:          lexik_jwt_authentication.handler.authentication_failure
                 require_previous_session: false

        api:
            pattern:   ^/api
            stateless: true
            provider: user
            lexik_jwt: ~

        main:
                    anonymous: ~


    access_control:
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: [ROLE_USER, ROLE_ADMIN] }

这是我的routing.yml

app:
    resource: "@AppBundle/Controller/"
    type:     annotation

api_login_check:
    path: /api/login_check

#REST
rest:
  type : rest
  resource : Project\MyBundle\Controller\MyController
  prefix : /api

这是我第一次部署symfony项目我花了很多时间来处理这个错误希望有人可以帮助我..提前谢谢

2 个答案:

答案 0 :(得分:1)

login_check不适用于" GET"请求,你必须强迫它" POST" request.You可以创建它像@federico show you

fos_user_security_check:
    path: /login_check
    defaults: { _controller: SiteUserBundle:Security:check }
    requirements:
        _method: POST

答案 1 :(得分:0)

因为它在开发模式下工作但在prod模式下不工作,可能是你根本没有清除缓存。 (特别是当你编写它是你的第一个Symfony部署时。)为此,执行:

对于Sf3:./bin/console --env=prod cache:clear

对于Sf2.4:./app/console --env=prod cache:clear