如果您使用網守類請求之前驗證打你,你可以創建防火牆「預認證」監聽器(即驗證防火牆之前發生)通過延長AbstractPreAuthenticatedListener和實施getPreAuthenticatedData()
:
class GatekeeperListener extends AbstractPreAuthenticatedListener
{
protected function getPreAuthenticatedData(Request $request)
{
return array(
Gatekeeper::getCurrentUsername(), // username
'', // credentials
);
}
}
您需要創建一個安全工廠,以便爲系統引入一個新的身份驗證偵聽器。這個過程是這樣的食譜文章中描述:
How to create a custom Authentication Provider: The Factory
你security.yml
應該是這個樣子:
security:
factories:
- "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/config/security_factories.yml"
firewalls:
main:
pattern: .
gatekeeper: true
克里斯,感謝您的回覆。我終於解決了這個問題,還有一個問題。憑證是返回數組的一部分嗎?是逗號分隔的一組角色還是一組角色?感謝您的有益迴應。我不認爲PreAuthenicatedListener在Symfony2文檔中的任何地方都被提及(除了API)。 –
該數組中的第二項將是用戶的密碼,但您可以只返回一個空字符串。 –
好克里斯,我想我有更多的工作,但現在我不斷收到「在SecurityContext中找不到令牌」異常。令牌插入安全上下文的位置在哪裏?我是否需要這樣做,還是應該由我的用戶提供商在理論上發生這種情況? –