Symfony单一登录表单处理多种用户类型

时间:2018-08-20 17:41:27

标签: symfony

请考虑与单个登录实体相关的单个登录表单,并检查凭据。

我该如何处理一个可以处理四个用户类型帐户的登录表单?

两种用户类型是用户名,两种用户类型是电子邮件。

我想到的方法只是检查用户名的输入是用户名还是电子邮件,以将选择字段缩小到仅两种用户类型,然后运行登录查询以获取一种用户类型的用户详细信息。

然后,如果未找到任何内容,请对可以连接信息的第二个用户类型运行第二个查询。

如果没有,请返回错误,如果是,则将用户登录。

但是,当我刚接触Symfony时,您是否有任何技巧说明如何正确使用框架?

1 个答案:

答案 0 :(得分:0)

您需要按照Symfony文档中的说明创建自定义用户提供程序:

http://symfony.com/doc/current/security/custom_provider.html

网站上提供了一个简单的示例。您可以通过fetchUser()方法来实现自己的想法。

<?php

namespace App\Security\User;

// use...

class WebserviceUserProvider implements UserProviderInterface
{
    // ...

    private function fetchUser($username)
    {
        // Your logic

        throw new UsernameNotFoundException(
            sprintf('Username "%s" does not exist.', $username)
        );
    }
}