如何以编程方式使用用户的登录名和密码登录Symfony?

如何以编程方式使用用户的登录名和密码登录Symfony?,symfony,symfony-security,Symfony,Symfony Security,我想写一个这样的功能测试: $user=$auth->login$username,$password; 然后我可以检查以下行为: 如果用户名/密码与用户不匹配,则登录失败 如果用户被禁用,则登录失败 否则,登录将起作用 我不想对这个进行HTTP请求 我该怎么办 我看到的所有示例要么涉及模拟HTTP请求,要么在没有密码的情况下手动登录用户 编辑:我使用。您可以使用UsernamePasswordToken和Symfony authentication manager来执行此操作,如文档中所述,特

我想写一个这样的功能测试:

$user=$auth->login$username,$password; 然后我可以检查以下行为:

如果用户名/密码与用户不匹配,则登录失败 如果用户被禁用,则登录失败 否则,登录将起作用 我不想对这个进行HTTP请求

我该怎么办

我看到的所有示例要么涉及模拟HTTP请求,要么在没有密码的情况下手动登录用户


编辑:我使用。

您可以使用UsernamePasswordToken和Symfony authentication manager来执行此操作,如文档中所述,特别是第一个示例:

如果密码不正确,代码将如何失败?这里我们传递$user对象。因此,我们不需要密码。问题是:如果用户名/密码与用户不匹配,则登录失败。谢谢您的回答,但我正在寻找一个传递登录名和密码的解决方案。您是否可以澄清您试图实现的目标?密码和禁用的东西很简单。但你所说的登录不起作用是什么意思?例如,您是否会启动依赖于用户角色设置的其他代码?@Cerad我想测试我对Symfony中的安全功能的扩展是否正常工作,即登录功能是否正常工作。密码和禁用的内容很简单。->如果我能测试一下,我想知道初学者是如何轻松完成的?我所能建议的就是查看SecurityBundle中的测试,以获取示例。谢谢,这似乎已经走上正轨了。但是,我找不到用于注释的类…\UsernamePasswordToken的令牌的身份验证提供程序。我想这是因为我使用Guard,Guard不使用这些代币。知道吗?不,对不起。我还没有使用过Guard,所以我对它不熟悉。
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

// main - your main firewall key    
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$tokenStorage->setToken($token);