标签:spring-boot spring-security spring java
ProviderManager在检索DaoAuthenticationProvider.class中的用户时抛出了InternalAuthenticationServiceException.class,
loadedUser = this.getUserDetailsService().loadUserByUsername(username);
我想处理此异常并将我的自定义响应返回给客户端.
我不想通过编写自定义ProviderManager来处理此问题.
对于所有其他OAuth异常,我可以使用Custom WebResponseExceptionTranslator处理异常.
但是我无法捕获诸如InternalAuthenticationServiceException.class之类的安全异常.
我没有选择将ErrorController与/ error路径一起使用,它破坏了其他流程.
解决方法:
首先,您需要实现自己的AuthenticationEntryPoint,名称实际上并不是自动表达的.
例如,如果您需要始终返回状态码200(仅出于学习目的,请不要在现实世界中使用它……)
@Component("myOwnAuthenticationEntryPoint")
public class MyOwnAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, org.springframework.security.core.AuthenticationException authException) throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_OK, "Unauthorized");
}
然后,在WebSecurityConfig中,需要将其设置为身份验证异常处理程序入口点.
...
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
@Autowired
MyOwnAuthenticationEntryPoint myOwnAuthenticationEntryPoint;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.exceptionHandling().authenticationEntryPoint(myOwnAuthenticationEntryPoint);
...
}
就这样.
标签:spring-boot,spring-security,spring,java 来源: https://codeday.me/bug/20191026/1938090.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。