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中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述