spring security自定义异常返回
时间: 2024-10-25 20:07:14 浏览: 12
spring security自定义登录页面
5星 · 资源好评率100%
Spring Security 自定义异常返回主要是为了处理那些不符合安全策略的请求,比如用户认证失败、权限不足等情况。你可以通过创建自定义的 `AuthenticationException` 或者继承已有的 `AccessDeniedException` 等基础异常,并在 Spring Security 的配置中设置全局处理器,来捕获并定制这些异常的响应。
以下是一个简单的例子:
```java
public class CustomUnauthorizedException extends RuntimeException implements AuthenticationException {
// 可选:添加额外信息,如错误码或消息
private String errorMessage;
public CustomUnauthorizedException(String errorMessage) {
this.errorMessage = errorMessage;
}
@Override
public String getMessage() {
return errorMessage;
}
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain chain) throws ServletException, IOException {
try {
chain.doFilter(request, response);
} catch (AuthenticationException e) {
if (e instanceof CustomUnauthorizedException) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, ((CustomUnauthorizedException) e).getMessage());
} else {
super.handleAuthenticationFailure(request, response, e);
}
}
}
}
```
在这个例子中,当 `doFilter` 遇到 `CustomUnauthorizedException` 时,会发送一个 HTTP 401 Unauthorized 响应,并包含自定义的错误消息。如果你需要更复杂的控制,还可以通过实现 `AccessDeniedHandler` 接口来进一步定制访问被拒绝时的行为。
阅读全文