[英]Symfony2 firewall Web & API authentication
我正在嘗試建立一個項目,在這里我可以通過API
和Web
界面(登錄表單)對用戶進行身份驗證。 到目前為止,我只能管理一種登錄表單,這是主要的Web
登錄表單。 我需要通過API
對其進行身份驗證,並調出帶有消息的自定義oauth表單,以通知用戶有關授權的信息,基本上只是一條自定義消息。 像facebook這樣的東西可能會。
到目前為止,在Symfony2安全頁面上,我找不到所需的幫助,也找不到博客。 至少不是一個對我有用的人。
所以理想的情況是
http://url.com/
用於web
http://url.com/api
for api
我正在為我的用戶使用FOS用戶捆綁包,為oauth身份驗證使用FOS OAuth捆綁包,為REST API使用FOSRestBundle。
如本oauth教程中所述 ,這是我要實現的確切方案。
當我問像URL http://url.com/oauth/v2/token?client_id=24_2qxtvmjv99eso8wg8sowc8c04o488og8gs8wo0osocks0wkcw0&client_secret=33ghqa2w202sooscwogw0kwwwg0gc00k8sgkkw0cgco4cg08s0&grant_type=client_credentials
它重定向我到登錄頁面。 據我了解,我的access_control
是錯誤的。
這是我的security.yml文件:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_USER: [ROLE_CUSTOMER_RSS, ROLE_CUSTOMER_ASS]
ROLE_AGENT: ROLE_USER
ROLE_ADMIN: ROLE_AGENT
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false # can be omitted as its default value
ui_login:
pattern: ^/
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: /
logout: true
anonymous: true
assets:
pattern: ^/(css|images|js)/
security: false
dev:
pattern: ^/(_(profiler|wdt|configurator|error))/
security: false
access_control:
- { path: ^/oauth/v2/auth_login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: [ROLE_USER] }
我知道我在這里錯過了很多東西。 請幫忙。
防火牆的順序很重要。 現在,您配置方式的第一個網址“ ^ /”的“ catchall”防火牆正在捕獲所有請求,因此其他防火牆均未激活。 應該首先放置更具體的防火牆,然后再放置次具體的防火牆。 因此, ui_login
防火牆應該是最后一個定義的防火牆
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.