這一問題的原因是從合作者的要求,誕生了:我想知道我是否可以刪除提供商。是強制性的?如果我可以將其方法留空,我想刪除它。Symfony2可以在沒有UserProvider的情況下工作嗎?
所以,在Symfony 供應商配置是強制。另外我需要配置至少一個提供商。完成!我的定製服務是這樣的:
final class CustomListener implements UserProviderInterface
{
public function loadUserByUsername($username)
{
// ...
}
public function refreshUser(UserInterface $user)
{
return $user;
}
public function supportsClass($class)
{
// ...
}
}
我可以登錄。登出。 ......但我有點困惑。爲什麼界面想要這些「無用的」,目前,loadUserByUSername
和supportsClass
?無用的含義:我有空的實現,它的工作原理!工作,意味着我通過$request->getSession()->set('firefall', $token);
手動設置會話,並且用戶已通過身份驗證。我可以註銷用戶失效會話。
我相信,至少,這個供應商需要的是refreshUser返回的UserInterface:
public function refreshUser(UserInterface $user)
{
return $user;
}
因爲登錄不沒有這個回報的工作。但是我可以將其他方法留空。
我看着裏面測試,並在UserProviderInterface
方法的意見。但沒有。我沒有得到,如果我可以:
- remove provider;
- 我錯過了文檔中的東西;
- 我試圖用嚴重的Symfony(可能);
- 我是一個茶壺;
- ... -
而且,....爲什麼登錄不,當我註釋此行,即使我的防火牆不使用該供應商合作?
public function refreshUser(UserInterface $user)
{
// return $user;
}
-
我創造了這個CustomListener
只是因爲我已經定義 服務爲供應商。然後我收到以下消息:
傳遞給Symfony \ Component \ Security \ Core \ Authentication \ Provider \ DaoAuthenticationProvider :: __ construct()的參數1必須是Symfony \ Component \ Security \ Core \ User \ UserProviderInterface的一個實例,
我不是一個數據庫。我只是一個用於用戶身份驗證的API,並且還提供數據。我沒有使用教義。 – sensorario
如果您使用的是API,那麼您的身份驗證如何與空的用戶提供者協同工作? Symfony如何知道如何加載用戶? –
在控制器內部,我使用HTTP客戶端來詢問API是否良好,如果它返回給我一些特定的值,我這樣做:'$ request-> getSession() - > set('_ security_secured_area',$ this-> token-> createFromRequest($ request));' – sensorario