使用实现AdvancedUserInterface的User类时,如何在Symfony2.1应用程序中自定义UserChecker类提供的错误消息?
例如,当用户未启用或其帐户已被锁定时,会提供这些消息!
使用实现AdvancedUserInterface的User类时,如何在Symfony2.1应用程序中自定义UserChecker类提供的错误消息?
例如,当用户未启用或其帐户已被锁定时,会提供这些消息!
你甚至可以在 Symfony 2.0 中轻松地做到这一点。
无需重新实现UserCheckerInterface
.
按照此处所述实现登录表单:使用传统登录表单。
$error
实际上是AuthenticationException的一个实例。
如果像这样在模板中显示它:
{% if error %}{{ error.message|trans }}{% endif %}
...然后您可以使用翻译组件自定义消息,例如。在你的messages.en.yml中:
'User account is locked.': 'Your account has been locked by administrator.'
'The presented password is invalid.': 'Invalid password.'
'Bad credentials': 'Invalid username.'
如果您这样做,您将免费获得翻译:)
顺便说一句,我读过一个案例研究,该案例研究建议向用户说明登录到底出了什么问题(通过?用户名?)超过了安全问题(就用户体验而言)并大大提高了转换(返回用户)。
Symfony 2.1 中没有此功能。它计划作为 Symfony 2.2 的一部分发布
有关更多信息,请参阅此讨论。
更新以响应@JeanValjean
您可以实现Symfony\Component\Security\Core\User\UserCheckerInterface
然后使用以下配置键将用户检查器设置为您的类。
security.user_checker.class = My\User\Checker\Class.