Grails REST安全 - 过期密码

时间:2015-04-30 00:54:58

标签: rest grails spring-security passwords

我有一个应用程序并运行REST身份验证工作,但现在想要添加密码到期(这将通过石英作业设置默认用户类的属性 - 布尔密码已过期)

有人能指出我正确的方向来处理过期的密码异常,返回类似于403的内容,表示在前端而不是401上输入新密码。

我在日志中看到以下内容:

DEBUG userdetails.DefaultPostAuthenticationChecks  - User account credentials have     expired
DEBUG rest.RestAuthenticationFilter  - Authentication failed: User credentials have     expired
DEBUG bearer.BearerTokenAuthenticationFailureHandler  - Sending status code 401 and header WWW-Authenticate: Bearer

假设我必须在某处覆盖某个方法,但我不熟悉grails并且不确定如何执行此操作。

由于

1 个答案:

答案 0 :(得分:0)

找出解决方案。

供其他人参考: - 1)禁用承载令牌支持(不确定是否需要它但是它的工作)

grails.plugin.springsecurity.rest.token.validation.useBearerToken = false
grails.plugin.springsecurity.rest.token.validation.headerName = 'X-Auth-Token'

2)创建一个实现

的新类
class CustomRestAuthenticationFailureHandler implements AuthenticationFailureHandler {@
    Override
    void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse     response, AuthenticationException exception) {
        def statuscode = HttpServletResponse.SC_FORBIDDEN
            ...
            // do something based on the exception message and change the status or add a     message to response.body
    }

3)将bean添加到resources.groovy

beans = {

  restAuthenticationFailureHandler(CustomRestAuthenticationFailureHandler) {

  }
}