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

时间:2019-05-22 10:05:35

标签: symfony symfony-security

我想编写这样的功能测试:

$user = $auth->login($username, $password);

然后我可以检查以下行为:

  • 如果用户名/密码与用户不匹配,登录将失败
  • 如果用户被禁用,则登录失败
  • 该登录名无效

我不想为此进行HTTP请求

我该怎么办?

我看到的所有示例都涉及模拟HTTP请求或不使用密码手动登录用户。

编辑:我使用Guard

2 个答案:

答案 0 :(得分:1)

您可以使用UsernamePasswordToken和Symfony身份验证管理器执行此操作,如文档中所述,尤其是第一个示例:https://symfony.com/doc/current/components/security/authentication.html

答案 1 :(得分:0)

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);