网站建设的栏目,自然资源网站建设方案,全国最大的关键词挖掘,淘宝店铺怎么免费推广文章目录 场景实现配置 场景 AccessDeniedHandler 访问一个需要需要认证的资源,身份认证成功(登录成功) 但是角色和权限不足时 该接口会被调用, 用来返回: 重定向到错误页面、返回特定的错误响应等 AuthenticationEntryPoint 接口是 Spring Security 中的一个接口#xff0c;用… 文章目录 场景实现配置 场景 AccessDeniedHandler 访问一个需要需要认证的资源,身份认证成功(登录成功) 但是角色和权限不足时 该接口会被调用, 用来返回: 重定向到错误页面、返回特定的错误响应等 AuthenticationEntryPoint 接口是 Spring Security 中的一个接口用于处理在用户尝试访问受保护资源时出现的身份验证异常。它定义了一个方法 commence该方法在身份验证失败时被调用允许应用程序自定义处理方式例如重定向到登录页面、返回特定的错误响应等。 实现
/*** version V1.0* author: carsonlius* date: 2023/12/20 16:09* company* description AccessDeniedHandler 接口是 Spring Security 中用于处理访问被拒绝Access Denied的情况的接口。* 当经过身份验证的用户尝试访问某个受保护的资源但由于其角色或权限不足而被拒绝访问时AccessDeniedHandler 接口的实现类将会被调用* 允许应用程序自定义如何处理这种访问拒绝的情况。*/
Component
Slf4j
public class AccessDeniedHandlerImpl implements AccessDeniedHandler {Overridepublic void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {log.warn([commence][访问 URL({}) 时用户权限不够], request.getRequestURI());// 返回 403ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.FORBIDDEN));}
}/*** version V1.0* author: carsonlius* date: 2023/12/20 16:02* company* description AuthenticationEntryPoint 接口是 Spring Security 中的一个接口* 用于处理在用户尝试访问受保护资源时出现的身份验证异常。它定义了一个方法 commence该方法在身份验证失败时被调用* 允许应用程序自定义处理方式例如重定向到登录页面、返回特定的错误响应等。*/
Component
Slf4j
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {Overridepublic void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {log.debug([commence][访问 URL({}) 时没有登录], request.getRequestURI());// 返回 401ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.UNAUTHORIZED));}
}配置 /*** 配置 URL 的安全配置* p* anyRequest | 匹配所有请求路径* access | SpringEl表达式结果为true时可以访问* anonymous | 匿名可以访问* denyAll | 用户不能访问* fullyAuthenticated | 用户完全认证可以访问非remember-me下自动登录* hasAnyAuthority | 如果有参数参数表示权限则其中任何一个权限可以访问* hasAnyRole | 如果有参数参数表示角色则其中任何一个角色可以访问* hasAuthority | 如果有参数参数表示权限则其权限可以访问* hasIpAddress | 如果有参数参数表示IP地址如果用户IP和参数匹配则可以访问* hasRole | 如果有参数参数表示角色则其角色可以访问* permitAll | 用户可以任意访问* rememberMe | 允许通过remember-me登录的用户访问* authenticated | 用户登录后可访问*/Beanprotected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {// 登出httpSecurity.cors().and() // 开启跨域.csrf().disable() // csrf禁用,因为不使用session.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // STATELESS无状态 表示应用程序是无状态的不会创建会话。这意味着每个请求都是独立的不依赖于之前的请求。适用于 RESTful 风格的应用。.and().headers().frameOptions().disable().and().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint) // 身份未认证时响应.accessDeniedHandler(accessDeniedHandler); // 身份已经认证登录,但是没有权限的情况的响应return httpSecurity.build();}