我正在使用 fosUserBundle 建立一个站点。我需要编写一些单元测试,但我似乎无法让身份验证正常工作以与它们一起使用。我已经尝试了一些没有运气的方法。
方法 1 - 安全设置中的链提供程序以进行我可以依赖的标准登录。当我这样做时,唯一有效的身份验证是 in_memory 提供程序,这意味着我可以使用管理员用户登录,但不能使用 fosUserBundle 创建的任何用户
安全.yml
安全: 编码器: “FOS\UserBundle\Model\UserInterface”:明文 “Symfony\Component\Security\Core\User\User”:纯文本 提供者: 链提供者: 提供者:[in_memory,fos_userbundle] 在记忆中: 用户: 管理员:{密码:管理员,角色:['ROLE_ADMIN']} fos_userbundle: id:fos_user.user_manager 防火墙: 主要的: 模式:^/ 表单登录: 提供者:fos_userbundle 登录路径:/ csrf_provider:form.csrf_provider default_target_path:/媒体 注销:真 匿名:真实 http_basic: 提供者: in_memory
方法 2- 我在单元测试的设置中创建了一个用户。但是使用这种方法,我永远无法使用我刚刚创建的用户登录,我不需要用户确认。
公共功能设置(){ $kernel = 静态::createKernel(); $this->repo = $kernel->boot(); $this->repo = $kernel->getContainer(); $userManager = $this->repo->get('fos_user.user_manager'); $email = "testing".(string) self::newRandomNumber()."@test.com"; $un = "test".(string) self::newRandomNumber(); $fn = "测试"; $ln = "激光"; $pwd = "密码1"; $user = $userManager->createUser(); $user->setEmail($email); $user->setUsername($un); $user->setFirstName($fn); $user->setLastName($ln); $user->setPlainPassword($pwd); $user->setBimStaff(True); // 将用户持久化到数据库 $userManager->updateUser($user); $this->user = $user; $this->client = static::createClient(); $crawler = $this->client->request('GET', '/'); $form = $crawler->selectButton('登录')->form(); // 设置一些值 $un = 'Lucas'.self::newRandomNumber(); $form['_username'] = $un; $form['_password'] = $pwd; // 提交表单 $crawler = $this->client->submit($form); print_r($this->client->getResponse()); $this->client->followRedirects(); }
我已经尝试过以表单和 http 基本身份验证登录,但似乎都不起作用。
有人有什么建议吗?
谢谢,科里