[英]Anonymous and authenticated users for same firewall in Symfony
我有兩個用於auth和api的防火牆。 但是我想將它們結合起來並能夠檢查控制器中是否有用戶。
firewalls:
user:
pattern: ^/api/auth
stateless: true
anonymous: true
json_login:
check_path: /api/auth/login_check
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
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
access_control:
- { path: ^/api/auth, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
我想要做的是將防火牆組合成一個防火牆,並允許所有用戶在那里,但是如果JWT過去了,仍然可以用來識別用戶。
可能嗎?
我認為,要實現這一點,您只需要匹配^ / api模式的防火牆並繼續使用保護驗證器即可。 然后,在您的身份驗證器內部,檢查請求的確切路由,然后選擇繼續正常的警衛身份驗證器流程還是使用自定義邏輯來實現json登錄。 但是,即使后衛允許您實現自己的邏輯,這也有點臟。 保持分開的防火牆聽起來更好。
我認為最好保留單獨的防火牆,就像已經提到的那樣,但是如果您絕對需要保持應用程序對所有人開放並檢查用戶是否在控制器中通過了身份驗證,則可以參考symfony的文檔並使用類似的方法:
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.