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