Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring security中的自定义消息以及UserDetails服务实现和异常_Java_Spring_Spring Security - Fatal编程技术网

Java Spring security中的自定义消息以及UserDetails服务实现和异常

Java Spring security中的自定义消息以及UserDetails服务实现和异常,java,spring,spring-security,Java,Spring,Spring Security,我正在使用SpringSecurity 2.0.7。它已经用一个preAuthenticatedUserDetailsServicebean实现了UserDetailsService 很好用。现在我想添加一个新的自定义错误消息。 在方法loadUserByUsername中,我想添加一些自定义业务逻辑。 例如,基于某些属性,我不希望用户登录,因此我抛出一个带有自定义消息的UsernameNotFoundException Spring负责处理异常并将其设置为会话,但当我使用“Spring\u S

我正在使用SpringSecurity 2.0.7。它已经用一个
preAuthenticatedUserDetailsService
bean实现了
UserDetailsService

很好用。现在我想添加一个新的自定义错误消息。 在方法
loadUserByUsername
中,我想添加一些自定义业务逻辑。 例如,基于某些属性,我不希望用户登录,因此我抛出一个带有自定义消息的
UsernameNotFoundException

Spring负责处理异常并将其设置为会话,但当我使用“Spring\u SECURITY\u LAST\u exception”键从会话中检索异常时,会收到一条“坏凭据”消息

目前,我正在处理一件令人讨厌的工作,主要是想了解发生了什么

想法


顺便说一句,我在这里读了很多关于这个问题的文章,但大部分都是关于SpringSecurity3.0的。正如评论中提到的@M.Deinum。为了安全起见,Spring以这种方式处理。实现可以在类中看到。

从安全角度看,这基本上就是您想要的。您不想告诉用户用户名不存在。黑客接着进入下一个用户名,直到他收到另一条消息(密码错误),他将开始破解密码。是的,我明白你的意思,但这是业务逻辑,例如凭据正常,但密码过期,或者用户尚未激活。用户应该看到这些消息。请在您的问题中详细说明,因为目前还不清楚您想要什么。您的评论和问题不相关,因为您正在谈论与非活动用户的过期凭据无关的
UsernameNotFoundException
。该方法的公司抛出
UsernameNotFoundException
。下面是:
org.springframework.security.userdetails.userdetails loadUserByUsername(java.lang.String s)抛出org.springframework.security.userdetails.UsernameNotFoundException,org.springframework.dao.DataAccessException但我将尝试澄清这个问题!Spring将始终显示“错误凭据”,但不会提供更多信息。您可以在
ExceptionTranslationFilter
及其使用的其他组件(如
入口点
等)中检查异常的处理方式。