AuthenticationEntryPoint使用
AuthenticationEntryPoint
AuthenticationEntryPoint
: spring security 中的一个接口,用于处理认证失败或者未认证的请求。当用户尝试访问受保护的资源而未经过身份验证,,或者身份验证失败的时候,调用
FilterSecurityInterceptor
: 对受保护资源的控制访问 和 权限验证
作用:
- 访问控制决策
- 权限验证
- 异常处理
- 前置处理和后置处理
ExceptionTranslateFilter
: 处理身份验证和访问控制过程中的异常,,主要捕获spring security中抛出的异常,,并根据异常的类型,,来处理
作用:
- 异常处理
- 认证失败处理
- 访问拒绝处理
- 异常转换
AuthenticationEntryPoint使用
定义一个 AuthenticationEntryPoint 的bean
@Component
public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
String requestURI = request.getRequestURI();
String msg = String.format("请求访问 %s,认证失败,无法访问系统资源 ", requestURI);
response.setStatus(200);
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write(msg);
}
}
配置到spring-security中
原理:
所有需要被认证的请求 都会走FilterSecurityInterceptor
这个拦截器会去判断是否认证,是否有权限访问,,如果没有权限,,,会被跳到 ExceptionTranslateFilter
这个filter中