从自定义AuthenticationProvider抛出自定义异常和显示错误消息

时间:2011-06-20 17:30:38

标签: grails spring-security

这是this question的后续行动。

我有一个自定义AuthenticationProvider,它扩展了AbstractUserDetailsAuthenticationProvider。在additionalAuthenticationChecks中,我正在做一些自定义身份验证工作,此过程的一部分是在登录屏幕上向用户显示一些消息。目前,为了进行测试,我创建了一个UserNotActivatedException:

class UserNotActivatedException extends AuthenticationException {

  public UserNotActivatedException(String message, Throwable t) {
    super(message, t)
  }

  public UserNotActivatedException(String message) {
    super(message)
  }

  public UserNotActivatedException(String message, Object extraInformation) {
    super(message, extraInformation)
  }

}

在附加的身份验证检查中,我只是立即将其投入测试。现在,我需要知道我需要做什么才能让自己的失败消息显示在登录屏幕上。在spring-security-core默认配置中,我们可以覆盖以下内容:

errors.login.disabled = "Sorry, your account is disabled."
errors.login.expired = "Sorry, your account has expired."
errors.login.passwordExpired = "Sorry, your password has expired."
errors.login.locked = "Sorry, your account is locked."
errors.login.fail = "Sorry, we were not able to find a user with that username and password."

但我不知道如何添加自己的附加信息。

1 个答案:

答案 0 :(得分:4)

看起来这些消息只会被生成authfail的{​​{1}} LoginController操作使用。这是模板中的代码(在插件中):

grails-app/controllers

(来自〜/ .grails / 1.3.7 / projects / project-name / plugins / spring-security-core-1.1.2 / src / templates / LoginController.groovy.template) < / p>

您可以将UserNotActivatedException类型添加到那里的条件中。