我正在关注http://symfony.com/doc/current/cookbook/security/voters.html并尝试创建一个自定义投票者,该投票者拒绝访问标题中不包含有效 API 密钥和摘要的请求(受http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html的影响- 我没有构建身份验证提供程序,因为我需要为相同的请求使用 FOSUserBundle 提供程序)。
我想将我的 api 密钥/秘密存储在内存用户提供程序中,并可能在以后将其迁移到自定义 mongodb 提供程序。所以我需要一种将用户提供者注入我的选民的方法。我已经注入了服务容器,但是可以从中访问用户提供者吗?
我的服务定义:
services:
security.access.api_client_voter:
class: Acme\RestBundle\Security\Authorization\Voter\ApiClientVoter
arguments: [@service_container, %kernel.cache_dir%/security/nonces]
public: false
tags:
- { name: monolog.logger, channel: authentication }
- { name: security.voter }
所以我的问题是,如何注入内存提供程序?食谱中的 WSSE 示例似乎使用身份验证提供程序工厂来替换字符串“security.providers.in_memory”,但由于我只是使用选民,这是必要的吗?如果有必要,我的工厂会是什么样子?