当前位置: 首页 > news >正文

springsecurity03--异常拦截处理(认证异常、权限异常)

目录

Spingsecurity异常拦截处理

认证异常拦截

权限异常拦截

注册异常拦截器

设置跨域访问


Spingsecurity异常拦截处理

认证异常拦截

/*自定义认证异常处理器类*/
@Component
public class MyAuthenticationExceptionHandler implements AuthenticationEntryPoint {@Overridepublic void commence(HttpServletRequest request,HttpServletResponse response,AuthenticationException authException) throws IOException, ServletException {response.setContentType("application/json;charset=utf-8");ResponseResult responseResult = newResponseResult(HttpStatus.NETWORK_AUTHENTICATION_REQUIRED.value(), "认证失败!");response.getWriter().append(JSON.toJSONString(responseResult));}
}

 第一次测试,测试登陆失败返回结果

权限异常拦截

/*** 自定义权限拒绝异常处理器*/
@Component
public class MyAccessDenyHandler implements AccessDeniedHandler {@Overridepublic void handle(HttpServletRequest request,HttpServletResponse response,AccessDeniedException accessDeniedException) throws IOException, ServletException {response.setContentType("application/json;charset=utf-8");ResponseResult responseResult = newResponseResult(403, "权限拒绝,没有访问权限!");response.getWriter().append(JSON.toJSONString(responseResult));}
}

 第二次,权限不足返回结果

 

 

注册异常拦截器

@Configuration
//启用security的注解支持
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MySecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate MyAuthenticationExceptionHandler myAuthenticationExceptionHandler;@Autowiredprivate MyAccessDenyHandler myAccessDenyHandler;@Overrideprotected void configure(HttpSecurity http) throws Exception {//配置自定义异常处理器(认证异常、权限拒绝异常)http.exceptionHandling().authenticationEntryPoint(myAuthenticationExceptionHandler).accessDeniedHandler(myAccessDenyHandler);
​}

相关权限注解

@PreAuthorize("hasAuthority('user:list')")
@PreAuthorize("hasAuthority('system:dept:list')")
@PreAuthorize("hasAnyAuthority('system:dept:list','system:test:list')")
@PreAuthorize("hasRole('CEO')")
@PreAuthorize("hasAnyRole('CEO')")
​
hasAuthority 和数据库表权限是等值比对
hasRole 添加ROLE_ 之后和数据库表中的角色名字比对

设置跨域访问

@Configuration
public class MyCorsFilter implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") //路径.allowedOrigins("*") //域名.allowedMethods("*")  //方法 get/post/put/delete.allowedHeaders("*")  //请求头.allowCredentials(true) ; //cookie 是否允许携带cookie}
}
http://www.dtcms.com/a/268563.html

相关文章:

  • 【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例
  • Rust 注释
  • OpenAI要开发能聊天的AI版Office挑战微软?
  • 【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含认证流程设计
  • window 服务器上部署前端静态资源以及nginx 配置
  • 揭秘图像LLM:从像素到语言的智能转换
  • 创意Python爱心代码
  • 基于Flink 1.20、StarRocks与TiCDC构建高效数据处理链路教程
  • linux如何下载github的一个项目
  • stm32与tp-linkv2接线、解决识别不到芯片问题
  • C++ -- string类的模拟实现
  • Go的标准库http原理解析
  • 【论文阅读】Few-Shot PPG Signal Generation via Guided Diffusion Models
  • Web Worker:让前端飞起来的隐形引擎
  • 第0章:开篇词 - 嘿,别怕,AI应用开发没那么神!
  • 【PaddleOCR】数据合成工具 Style-Text安装与使用案例介绍
  • 【机器学习笔记 Ⅲ】3 异常检测算法
  • 4D-VLA:具有跨场景标定的时空视觉-语言-动作预训练
  • Linux运维安全新范式:基于TCPIP与SSH密钥的无密码认证实战
  • 【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
  • C++多线程网络编程:助力高并发服务器性能提升
  • 无人机精准降落辅助系统核心技术解析
  • 一文讲清楚React Fiber
  • RAG 相关概念学习
  • VMware 17.0.2-21581411 安装教程(附详细步骤+序列号激活指南)
  • 【牛客算法】 小红的奇偶抽取
  • kotlin+MongoTemplate的时间类型为is_date类型 pymongo如何处理
  • 【vue】用conda配置nodejs,一键开通模版使用权
  • 设计模式分析
  • 1.1_5_1 计算机网络的性能指标(上)