首页 > 解决方案 > Symfony 单一登录表单处理多种用户类型

问题描述

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

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

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

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

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

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

但是由于我是 Symfony 的新手,你有什么建议可以告诉我如何正确地使用该框架来做这件事吗?

标签: symfony

解决方案


您需要按照 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)
        );
    }
}

推荐阅读