loadUserByUsername以及Symfony2中的其他参数

时间:2015-02-03 14:23:59

标签: php symfony

我已经实现了自定义身份验证提供程序(基于Custom Password Authenticator),而且loadUserByUsername(email)方法只接受一个参数。我需要一个额外的来检查这个用户是否属于公司ID(取自url参数),因为客户端可以通过一个电子邮件地址注册到多个公司。

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:3)

因为loadUserByUsernameUserProviderInterface中声明的方法的实现,所以你不能改变参数列表,因为php会在这种情况下抛出错误。我看到两种可能的解决方案:

  1. (有点hackish)在您的loadUserByUsername传递数组的实现中包含username AND ID,您需要检查。这有点hackish,因为它使用了php不是强类型的事实,你可以将数组而不是字符串(用户名)传递给loadUserByUsername方法。

    public function loadUserByUsername($params)
    {
        $id = $params['id']; 
        $username = $params['username']; 
        //now do whatever you need to do with $id and $username
    }
    
  2. 编写自己的loadUserByParams方法,该方法将采用数组(usernameID),并在第一步检查ID是否正常,如果是,它将使用loadUserByUsername个参数

    调用常规username方法
    public function loadUserByParams($id, $username)
    {
        //check if $id is ok;
        if ($id_is_ok) {
            return $this->loadUserByUsername($username);
        }
    }