我相信你想要做的是在文檔中有自己的頁面。看看How to create a custom user provider,它可以很好地演示如何使用web服務來驗證用戶身份。
UPDATE:
是的,我分享的鏈接會告訴你如何創建一個用戶提供。這正是你必須做的。在本頁的第一段中,它說:
當用戶提交用戶名和密碼時,認證層會要求配置的用戶提供程序爲給定用戶名返回用戶對象。
所以,你需要創建一個擴展UserInterface
一個類,這個類應該有從Web服務返回的所有屬性(也默認情況下,的UserInterface需要一些特性,如用戶名,密碼,鹽和角色,但如果你不使用它們,鹽和角色可以是空白的)。
然後您創建一個實現UserProviderInterface
的用戶提供程序。這將使得您在執行登錄時調用功能loadUserByUsername
。在這個函數中,你執行你的web服務請求,發送證書。您的請求的響應可以映射到您創建的用戶類。然後你返回你創建的用戶對象和從你的web服務返回的數據。
爲了使Symfony知道您想使用自定義用戶提供程序進行表單登錄,您需要爲您的用戶提供程序創建一項服務。因此,在src/Acme/WebserviceUserBundle/Resources/config/services.yml
(可能需要創建該文件),你可以因爲它概述了文檔添加一個服務:
parameters:
# path to the user provider you just created
webservice_user_provider.class: Acme\WebserviceUserBundle\Security\User\WebserviceUserProvider
services:
webservice_user_provider:
class: "%webservice_user_provider.class%"
一旦你創建了這個服務,那麼你只需要告訴你的表單登錄使用這個定製供應商。在security.yml:
security:
providers:
webservice:
# this id is the name of the service you created
id: webservice_user_provider
另外,如果你的密碼在你的web服務進行加密,您應該確保Symfony的加密用同樣的方式做比較。所以在安全。你可以添加yml
security:
encoders:
Acme\WebserviceUserBundle\Security\User\WebserviceUser: sha512 # or md5, or others
這隻顯示如何創建用戶提供者。但是我必須將密碼發送到web服務,並且如果密碼良好,服務將返回用戶數據。所以在我打電話給webservice後,我將不得不認證用戶。我如何跳過symfony步驟的其餘部分? – Daniel 2014-10-08 09:40:18
我更新了答案。您必須創建一個自定義用戶提供者。這是唯一的方法。 – Sehael 2014-10-08 15:32:49
這爲用戶提供編碼密碼,以便symfony可以檢查它是否相同。但我不能這樣做,因爲webservice期望用戶提供的用戶和密碼。我必須像這樣將用戶名和密碼發送到web服務:https:// host/check?user = admin&password = 12345,如果憑證是正確的,Web服務將回復(使用用戶配置文件數據)。 – Daniel 2015-01-07 14:58:06