Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >spring-security 401 403错误自定义处理

spring-security 401 403错误自定义处理

作者头像
johnhuster的分享
发布于 2022-03-28 12:38:09
发布于 2022-03-28 12:38:09
1.9K00
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

为了返回给前端统一的数据格式,一般所有的数据都会以类似下面的方式返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class APIResultDto<T> {
    /**
     * 状态码:-1代表成功,具体参考APIErrorCode类
     */
    private int er;

    /**
     * 状态描述,可以自行设置或使用APIErrorCode类中默认描述
     */
    private String erMessage;

    /**
     * 实际返回实体,isSuccess()返回true时该字段有效
     */
    private T items;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
}

但是一些框架,比如本文要说的spring-security是不按照我们自定义规范处理的,幸运的是spring-security框架给了我们可以定制化的地方,只需继承ResourceServerConfigurerAdapter,重写public void configure(ResourceServerSecurityConfigurer resources) throws Exception方法即可,在里面添加自定义的针对授权时返回的401以及403错误码,具体如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Autowired
    private AccessDeniedHandler accessDeniedHandler;
    @Autowired
    private AuthenticationEntryPoint authenticationEntryPoint;

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.authenticationEntryPoint(authenticationEntryPoint);
        resources.accessDeniedHandler(accessDeniedHandler);
    }

里面涉及到的AccessDeniedHandler以及AuthenticationEntryPoint如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Component
public class CustomizedAuthenticationEntryPoint implements AuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response,
                         AuthenticationException authException) throws IOException, ServletException {
        response.setContentType("application/json;charset=UTF-8");
        
         //按照系统自定义结构返回授权失败
response.getWriter().write(JSON.toJSONString(APIResultDto.failed(APIErrorCode.AUTH_FAILED)));
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Component
public class CustomAccessDeniedHandler implements AccessDeniedHandler {

    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        response.setContentType("application/json;charset=UTF-8");
        
          //按照系统自定义结构返回授权失败
 response.getWriter().write(JSON.toJSONString(APIResultDto.failed(APIErrorCode.AUTH_FAILED)));
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Security Oauth2 自定义 OAuth2 Exception
在使用Spring Security Oauth2登录和鉴权失败时,默认返回的异常信息如下
java干货
2021/02/19
1.4K0
Spring Security Oauth2 自定义 OAuth2 Exception
Spring Security 实战干货:自定义异常处理
最近实在比较忙,很难抽出时间来继续更 [Spring Security 实战干货系列](https://felord.cn/categories/spring-security/)。今天正好项目中 Spring Security 需要对认证授权异常的处理,就分享出来吧 。
码农小胖哥
2019/12/10
3K0
Spring Security 实战干货:自定义异常处理
Spring Security2
使用过滤器 .failureForwardUrl("/login/error");
P轴
2022/11/18
2240
一文搞定 Spring Security 异常处理机制!
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2020/07/02
1.8K0
Spring Security---ONE
我们可以通过浏览器进行登录验证,默认的用户名是user.(下面的登录框不是我们开发的,是HttpBasic模式自带的)
大忽悠爱学习
2021/12/07
1.9K0
Spring Security---ONE
木字楠后台管理系统开发(4):SpringSecurity引入并编写登陆接口
Spring Security可以在 Controller层、 Service层、Mapper层等以加注解的方式来保护应用程序的安全。 Spring Security提供了细粒度的权限控制,可以精细到每一个API接口、每一个业务的方法,或者每一个操作数据库的Mapper层的方法。 Spring Security提供的是应用程序层的安全解决方案,一个系统的安全还需要考虑传输层和系统层的安全,例如采用Htps协议、服务器部署防火墙等。
木字楠
2023/10/17
2560
木字楠后台管理系统开发(4):SpringSecurity引入并编写登陆接口
SpringBoot使用Security认证框架(1.加类)
本文章包含Security的认证和授权方法 并且在执行Security之前会执行自已编写的PowerFilter过滤器 而且登录信息会存入Redis,也会从Redis取
蚊子.
2023/08/10
3750
Spring Boot 3 集成 Spring Security + JWT
这里主要用到了Mybatis-plus、hutool 、knife4j ,其他依赖可以直接勾选
Harry技术
2025/01/13
2951
Spring Boot 3 集成 Spring Security + JWT
Spring Boot 3 集成 Spring Security + JWT
概述: 在本文中,我们将一步步学习如何使用 Spring Boot 3 和 Spring Security 来保护我们的应用程序。我们将从简单的入门开始,然后逐渐引入数据库,并最终使用 JWT 实现前后端分离。
Harry技术
2025/01/12
3320
Spring Boot 3 集成 Spring Security + JWT
spring cloud oauth2资源服务器自定义认证失败和拒绝访问错误消息
JAVA CONFIG @Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { ... @Override public void configure(ResourceServerSecurityConfigurer resources) throws Exception { resources.resourceI
路过君
2020/06/19
1.3K0
Spring Security 实战干货: 401和403状态
最近几篇我对Spring Security中用户认证流程进行了分析,同时在分析的基础上我们实现了一个验证码登录认证的实战功能。当认证失败后交给了AuthenticationFailureHandler来进行失败后的逻辑处理。今天来谈谈两个和认证授权息息相关的两个状态401和403以及它们如何在Spring Security融入体系中的。
码农小胖哥
2020/07/29
3.7K0
Spring Security 实战干货: 401和403状态
Spring Security入门(二) 基于内存存储的表单登录实战
Spring Security 对Servlet的安全认证是基于包含一系列的过滤器对请求进行层层拦截处理实现的,多个过滤器组成过滤器链。处理单个http 请求的过滤链角色示意图如下所示:
用户3587585
2022/09/21
7770
Spring Security入门(二) 基于内存存储的表单登录实战
厉害!我带的实习生仅用四步就整合SpringSecurity+JWT实现登录认证!
小二是新来的实习生,作为技术 leader,我还是很负责任的,有什么锅都想甩给他,啊,不,一不小心怎么把心里话全说出来了呢?重来!
沉默王二
2022/04/14
4880
厉害!我带的实习生仅用四步就整合SpringSecurity+JWT实现登录认证!
Spring Security:安全访问控制
“ 在前面的两篇文章中,说了如何使用Spring Boot搭建Security项目以及实现自定义登录认证,今天就拿一个具体的前后端分离项目来看一下安全访问的控制”
每天学Java
2020/06/02
9890
教你做一个自己的App
最近我的一个朋友独立开发了一个小程序,他给我看了下后台数据,短短几天用户已经20w了,这个小程序不是专对女性,但女性用户却占了2/3,说实话确实有点羡慕。
用户6171967
2022/09/07
9680
教你做一个自己的App
SpringBoot整合Security安全框架、控制权限
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
宁在春
2022/10/31
9050
SpringBoot整合Security安全框架、控制权限
Spring Security详解 顶
2020-01-05 01:57:16.482 INFO 3932 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
算法之名
2020/01/15
2.5K0
Spring Security详解
                                                                            顶
SpringSecurity学习
其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式
云边小卖部
2022/12/02
6820
【第十一篇】SpringSecurity基于JWT实现Token的处理
  前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。
用户4919348
2022/05/27
1.1K0
【第十一篇】SpringSecurity基于JWT实现Token的处理
【Kotlin Spring Boot 服务端开发: 问题集锦】 Spring Security : 自定义AccessDeniedHandler 处理 Ajax 请求
【Kotlin Spring Boot 服务端开发: 问题集锦】 Spring Security : 自定义AccessDeniedHandler 处理 Ajax 请求
一个会写诗的程序员
2018/08/17
1.5K0
推荐阅读
相关推荐
Spring Security Oauth2 自定义 OAuth2 Exception
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文