繁体   English   中英

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

[英]Symfony2 : Unable to find the controller for path “/api/login_check”. The route is wrongly configured

当我处于开发环境中时,一切正常,我的登录工作正常,但是当我将应用程序放置在服务器中并将环境更改为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项目,我花了很多时间解决这个错误,希望有人可以提前帮助我。

login_check在“ GET”请求中不可用,您必须在“ POST”请求中强制使用它。您可以像创建@federico一样创建它

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

由于它在开发人员模式下有效,而在生产模式下无效,因此可能是您根本没有清除缓存。 (特别是在编写时,这是您的第一个Symfony部署。)要执行此操作,请执行以下操作:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM