1

使用实现AdvancedUserInterface的User类时,如何在Symfony2.1应用程序中自定义UserChecker类提供的错误消息?

例如,当用户未启用或其帐户已被锁定时,会提供这些消息!

4

2 回答 2

5

你甚至可以在 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.'

如果您这样做,您将免费获得翻译:)

顺便说一句,我读过一个案例研究,该案例研究建议向用户说明登录到底出了什么问题(通过?用户名?)超过了安全问题(就用户体验而言)并大大提高了转换(返回用户)。

于 2012-12-03T20:07:55.360 回答
0

Symfony 2.1 中没有此功能。它计划作为 Symfony 2.2 的一部分发布

有关更多信息,请参阅此讨论


更新以响应@JeanValjean

您可以实现Symfony\Component\Security\Core\User\UserCheckerInterface

然后使用以下配置键将用户检查器设置为您的类。

security.user_checker.class = My\User\Checker\Class.
于 2012-09-24T16:39:28.873 回答