代码之家  ›  专栏  ›  技术社区  ›  JeanValjean

Symfony2:如何在控制器中检索UserChecker?

  •  1
  • JeanValjean  · 技术社区  · 13 年前

    这个 UserChecker 在里面 符号2 是用户身份验证所必需的类。

    假设您需要在控制器内对用户进行身份验证,您应该定义如下函数:

    protected function authenticateUser(User $user) {                
       $user_checker = ...//Get here the user checker
        try {
            $user_checker->checkPostAuth($user);
        } catch (AccountStatusException $e) {
            return;
        }
    
        $providerKey = $this->container->getParameter('firewall_name');
        $token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
        $this->container->get('security.context')->setToken($token);   
    }
    

    请注意 UserChecker 在Symfony2中定义为非公共服务:

      <service id="security.user_checker" class="%security.user_checker.class%" public="false" />
    

    如何获得 用户检查器 在控制器中?

    提前感谢

    1 回复  |  直到 13 年前
        1
  •  4
  •   Carlos Granados    13 年前

    您可以使用别名“获取”私人服务。请参见:

    http://symfony.com/doc/current/components/dependency_injection/advanced.html