我在我的symfony2應用中添加了FOSRestBundle,這個應用已經有一個公共區域和一個受FOSUserBundle保護的管理區域。FOSRestBundle add http basic auth
我的問題是,我沒有得到瀏覽器提示用戶/密碼,而且,當連接API與curl
我沒有得到授權。
# app/config/security.yml
providers:
user:
id: fos_user.user_provider.username
administrator:
entity: { class: App\UserBundle\Entity\Administrator, property: login }
現在我加入一個API區域,並希望使用基本的HTTP認證,所以增加了一個新的提供
api_provider:
memory:
users:
user1: { password: 1234, roles: 'ROLE_API_USER' }
user2: { password: 1234, roles: 'ROLE_API_USER' }
和一個新的防火牆:
firewalls:
backend:
pattern: ^/admin/
provider: administrator
anonymous: ~
form_login:
login_path: /admin/login
check_path: /admin/login_check
logout:
path: /admin/logout
target: /admin/
api:
pattern: ^/api/
provider: api_provider
anonymous: ~
# form_login: false # <- needed or not?
http_basic:
realm: "Api"
main:
pattern: ^/
form_login:
login_path: /login
check_path: /login_check
provider: user
csrf_provider: form.csrf_provider
logout: true
anonymous: true
在這一點上我LEEP得到一個403 - Forbidden
,所以如果我添加這樣如此security.yml
:
access_control:
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/user, role: ROLE_ADMIN_USUARIOS }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/error, role: ROLE_USER }
- { path: ^/api/, role: ROLE_API_USER }
- { path: ^/api/v1/users, role: ROLE_API_USER }
在此之後,我得到一個401 - unauthorized
。
我通過http basic auth強制瀏覽器提示輸入一個用戶/密碼,這並沒有發生。雖然,我最終需要的是服務器接受像this one這樣的http請求中的基本身份驗證標頭。
我我錯過了什麼?
由於
如果你解決你自己的問題,你可以將它張貼作爲回答自己的問題:) – tgies