loadUserByUsername 在 Symfony2 中使用附加参数


loadUserByUsername with additional parameters in Symfony2

我已经实现了自定义身份验证提供程序(基于自定义密码身份验证器),问题是loadUserByUsername (电子邮件)方法只接受一个参数。我需要额外的一个来检查此用户是否属于公司ID(取自url参数),因为可以使用一个电子邮件地址向多个公司注册客户端。

我怎样才能做到这一点?

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

  1. (有点黑客)在包含username AND IDloadUserByUsername传递数组的实现中,您需要检查。这有点黑客,因为它使用了 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是否正常,如果是,它将调用仅包含username参数的常规loadUserByUsername方法

    public function loadUserByParams($id, $username)
    {
        //check if $id is ok;
        if ($id_is_ok) {
            return $this->loadUserByUsername($username);
        }
    }