我需要在其中一个项目中创建身份验证,但简单的登录/密码不适合。需要逐步认证:1' - 用户输入其电话号码 - 检查用户是否存在,然后通过电话发送短信并打开下一个表格,否则显示消息; 2'st - 带代码输入的表单,用户输入获得的代码 - 检查代码是否等于生成然后验证用户,否则再次发送。
作为样本我认为在自定义控制器中获取手机数据,如果用户查找显示他形成相似性:
<form action="{{ path('login_check') }}" method="post">
<input type="hidden" id="username" name="_username" value="{{ user_phone }}" />
<label for="password">Code:</label>
<input type="text" id="password" name="_password" value="" />
<input type="submit" name="login" />
</form>
但我不喜欢这个选项。也许有人会说出更漂亮的版本?)
答案 0 :(得分:0)
我没有使用此解决方案,但我认为这可以帮助您
How to go back to referer after login failure?
此答案显示了如何在“登录失败”的情况下使用,但登录选项有一个“success_handler:some.service.id”。请查看以下网站,查看“app / config / security.yml”
的选项http://symfony.com/doc/current/reference/configuration/security.html
祝你好运答案 1 :(得分:0)
在这种情况下,您需要在security.yml中创建两个具有不同模式的防火墙:
firewall:
phone:
pattern: ^/phoneauth/login$
form_login:
provider: phone_auth_provider
check_path: your_login_check_path
context: same_unique_name
...
code:
pattern: ^/codeauth/login$
form_login
provider: code_auth_provider
check_path: your_login_check_path
context: same_unique_name
...
现在您需要创建两个自定义提供程序,一个用于 phoneauth ,另一个用于 codeauth
在 phoneauth 中,您只需要创建一个查询来搜索电话号码,如果电话号码存在,它应该返回用户对象,否则请执行发送短信的过程并根据您返回的消息可以将其重定向到 codeauth 登录页面
在 codeauth 提供程序中,它与之前的提供程序有些类似,您可以创建查询以搜索输入的代码,如果找到它将返回用户对象。
有关更多帮助,请查看以下链接:
Authenticate someone with a custom entity provider
Multi firewall configuration in security.yml