我已经实现了自定义身份验证提供程序(基于Custom Password Authenticator),而且loadUserByUsername(email)方法只接受一个参数。我需要一个额外的来检查这个用户是否属于公司ID(取自url参数),因为客户端可以通过一个电子邮件地址注册到多个公司。
我怎样才能实现这一目标?
答案 0 :(得分:3)
因为loadUserByUsername
是UserProviderInterface
中声明的方法的实现,所以你不能改变参数列表,因为php会在这种情况下抛出错误。我看到两种可能的解决方案:
(有点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
}
编写自己的loadUserByParams
方法,该方法将采用数组(username
和ID
),并在第一步检查ID
是否正常,如果是,它将使用loadUserByUsername
个参数
username
方法
public function loadUserByParams($id, $username)
{
//check if $id is ok;
if ($id_is_ok) {
return $this->loadUserByUsername($username);
}
}