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)
);
}
}
推荐阅读
- python - 按索引值将 pandas Series 拆分为连续的块
- python - switch return 语句中的多条指令
- c++ - 如何检测函数是否执行 IO 操作?
- python - Python在父目录中找不到模块
- ios - 在按钮单击时生成随机声音 swift 4
- mysql - SQL Query Select Clause,需要一个不返回几行的解决方案
- java - HTTP 响应 414
- reactjs - 从 React WebExtension 访问 Cookies API
- excel - 将 Excel 函数结果分配给单元格内的变量
- html - 服务器迁移后 CSS 未链接