2016-02-05 152 views
1

我有一個問題,我沒有真正找到答案。匿名用戶的自定義身份驗證提供程序

我必須維護一個使用自定義身份驗證和用戶提供程序的Symfony應用程序。提供者按照預期工作,並且用戶可以正確登錄。

但是,我需要爲匿名用戶創建一些可訪問的路由。當用戶未完全通過身份驗證時,它們也應該可以訪問。 於是,我就調整在的ACCESS_CONTROL配置security.yml使這些URL訪問:

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

    main: 
     pattern: ~ 
     anonymous: ~ 
     internal_api: 
      provider:  fos_userbundle 
      check_path:  /api/user/login 

     logout: 
      path: /api/user/logout 

access_control: 
    - { path: ^/api/init, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/api/resources, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: ROLE_USER } 

可惜,這是行不通的。只要用戶未完全通過身份驗證,用戶仍然無法訪問這些路由。

所以我的問題是:什麼是必要提供角色IS_AUTHENTICATED_ANONYMOUSLY通過自定義身份驗證提供程序?可以這樣做,或者我只需要調整我的security.yml設置?

問候

+0

什麼是'main'防火牆中的'internal_api'選項? – chalasr

+0

您是否檢查過您的路線匹配的訂單? – Twifty

回答

0

因爲你想通過匿名訪問做出的路線是你main防火牆後面,你path: ^/ ACCESS_CONTROL保護,您必須創建一個特定的防火牆他們。

在security.yml的firewalls補充一點:

api_resources: 
    pattern: ^/api/resources 
    anonymous: ~ 

api_init: 
    pattern: ^/api/init 
    anonymous: ~ 

,它應該工作。

相關問題