我正在为 Grails 应用程序使用 Spring Security 插件和 Spring Security REST 插件,并尝试实施密码更改策略。在前端,当您未登录时,我们的应用程序会捕获 401 错误,但您的密码已过期的情况会给出完全相同的 HTTP 响应。我正在寻找是否有办法改变它。
我可以捕获 AbstractAuthenticationFailureEvent 并确定它是否是由于 AuthenticationFailureCredentialsExpired 事件造成的,但我不知道如何让该事件从 API 中发送任何有意义的信息,表明这不仅仅是密码登录失败。
顺便说一句,我可以使密码过期并执行该策略,所以这不是问题。主要问题是此 API 的使用者如何区分失败的用户名/密码质询和“您需要更改密码”场景。