2017-06-29 59 views
1

我想用Symfony 3.3嘗試新的json_login ..在一個乾淨的項目後面跟着文檔..但防火牆完全忽略了json_login部分。我收到一個錯誤,說控制器沒有返回響應。Symfony 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) 
{ 
} 

我試着玩的路徑,使用名稱,但也相對路徑登錄或/登錄和一些其他組合..al相同

感謝您的幫助

回答

-1

直到Symfony文檔沒有更新,json_login選項需要一個success_handler和一個failure_handler..otherwise它會引發一個錯誤..它不足以定義一個目標路由..我已經提出了一個PR它應該被修復很快

+0

這並不能解決這個問題,我無法找到您提到的PR。 – Naji

1

這在文檔中沒有明確提及,但爲了使此配置生效,您需要請求指定"Content-Type": "application/json"標頭。否則請求只傳遞給控制器​​而不被安全監聽器處理。

另外,無論是否設計,你仍然想要實現控制器的響應,因爲 - 至少在我的Symfony 3.3.14 - Response沒有創建如文檔中所述。所以當用戶通過身份驗證(或錯誤憑據出錯)時,我仍然需要自己設計Response(這對我來說可以,至少我保留對響應格式/結構的控制)。