I가 다음 security.yml :Symfony 3로 테스트하기 위해 어떻게 사용자 제공자를 오버라이드합니까?
security:
# http://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
in_memory:
memory: ~
bd_provider:
entity:
class: AppBundle:Usuario
property: email
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
form_login:
login_path: login
check_path: login
provider: bd_provider
logout:
path: /logout
target: /login
그리고이 방법에 의해 시험 porpuses에 대한 인증 해요 :
protected function createClientWithAuthentication()
{
/* @var $client Client */
$client = static::createClient();
/* @var $user UserInterface */
$user = $client->getContainer()->get('doctrine')->getRepository('AppBundle:Usuario')->find(5);
$firewallName = 'main';
$token = new UsernamePasswordToken($user, $user->getPassword(), $firewallName, $user->getRoles());
$session = $client->getContainer()->get('session');
$session->set('_security_' . $firewallName, serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$client->getCookieJar()->set($cookie);
return $client;
}
하지만 in_memory 같은 테스트를위한 개의 다른 공급자를 사용하고 싶습니다 . 나는 것처럼
$user = new Usuario();
$user
->setUsername('[email protected]')
->setPassword('admin')
->setRole('ROLE_USER_ADMIN');
시험은, 로그인 페이지로 보내 주 : 그래서 내 config_test.yml
security:
providers:
em_memoria:
memory:
users:
[email protected]:
password: senha
roles: 'ROLE_SUPER_ADMIN'
encoders:
AppBundle\Entity\Usuario: plaintext
firewalls:
main:
provider: em_memoria
을에서 다음하지만 코드를 변경 때에 사용자를 조립하는 추가 잘못된 사용자를 사용합니다. 내가 여기서 무엇을 놓치고 있니? 내가해야 할 일이 더 있니?
기타 정보가 필요하다면 알려주세요. 여기에서 알려 드리겠습니다.
미리 감사드립니다.
정의는 서비스의 정의, 그렇지 않으면 나는 다음과 같은 오류가 발생 동일한 파일에 있어야합니다 .user_provider "를 실제 정의"bd_provider "로 대체합니다. [Symfony \ Component \ DependencyInjection \ Exception \ ServiceNotFoundException] 존재하지 않는 서비스 "bd_provider"를 요청했습니다. –
여기에서 일부 코드를 편집하고 다음을 수행했습니다. 클래스 TestUserProvider를 작성하고 사용자를 리턴하는 사용자 정의 제공자를 구현했습니다. 내 테스트 공급자가'providers '목록의 첫 번째 항목으로 지정되었지만 내 테스트에서 성공으로 실행되지만 더 이상 bd_provider를 사용할 수 없습니다. 내 기본 방화벽 아래에'provider '키를 지정해도 사용할 수 없습니다. . –