前端之家收集整理的这篇文章主要介绍了
php – 如何将内存中的用户提供程序注入服务?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
404_0@
我正在关注
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示例似乎使用auth提供程序工厂来替换字符串’security.providers.in_memory’,但由于我只是使用选民,这是必要的吗?如果有必要,我的工厂会是什么样子?
内存中的
用户提供程序首先在SecurityBundle的
security.xml中定义为抽象服务.然后,SecurityBundle的
SecurityExtension将根据您的
用户提供程序在security.yml中的配置创建具体的内存中
用户提供程序服务,每个
用户都将其
添加为一项服务.如您所见,此服务的
名称为security.user.provider.concrete.[防火墙
名称].因此,应该可以使用此服务或将此服务注入您的选民.您始终可以查看/ app / cache目录中的转储服务容器,以查找服务的
名称以及是否已定义它们.