我知道这个问题已经被问到,但是我无法让它工作,我无法看到我做错了什么。
我试图为一个函数编写测试,该函数依赖于登录的用户并从security.token_storage
获取用户对象,但不幸的是我无法使其工作。要设置令牌,我的代码是
$token = new UsernamePasswordToken(
$person,
$person->getPassword(),
'sso',
$person->getRoles()
);
$containerInterface->get('security.token_storage')->setToken($token);
$containerInterface->get('event_dispatcher')->dispatch(
AuthenticationEvents::AUTHENTICATION_SUCCESS,
new AuthenticationEvent($token)
);
其中$person
是用户对象,'sso'
是防火墙名称。当我运行一个测试,我从token_storage获取用户对象时,我得到null。
答案 0 :(得分:0)
如果我理解正确,那你就错过了登录活动
$event = new InteractiveLoginEvent($request, $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
另外,但我不确定,你不需要这个片段
$containerInterface->get('event_dispatcher')->dispatch(
AuthenticationEvents::AUTHENTICATION_SUCCESS,
new AuthenticationEvent($token)
);