【问题标题】:Symfony2: How to retrieve the UserChecker in a controller?Symfony2:如何在控制器中检索 UserChecker?
【发布时间】:2012-09-19 16:22:30
【问题描述】:

Symfony2 中的UserChecker 是用户认证的必要类。

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

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" />

如何在控制器中获取UserChecker?

提前致谢

【问题讨论】:

  • 我无法回答您的问题。可以举例说明吗?

标签: authentication symfony symfony-2.1


【解决方案1】:

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

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

【讨论】:

  • 是的,这是真的!在 config.yml 中添加类似以下服务就足够了: services: default_user_checker: alias: security.user_checker
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2012-05-03
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多