Oauth2的异常处理,统一封装
一.token的认证自定义异常
1.在资源服务器配置
2.创建CustomOAuthEntryPoint
package com.othp.core.config;import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;@Component
public class CustomOAuthEntryPoint implements AuthenticationEntryPoint {@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response,AuthenticationException authException) throws ServletException {Map map = new HashMap();map.put("code", "40001");map.put("message", "token无效!");
// map.put("message", authException.getMessage());map.put("data", request.getServletPath());response.setContentType("application/json");//请求正常码 200response.setStatus(HttpServletResponse.SC_OK);
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);try {ObjectMapper mapper = new ObjectMapper();mapper.writeValue(response.getOutputStream(), map);} catch (Exception e) {throw new ServletException();}}}
3.在资源服务器的配置authenticationEntryPoint
package com.othp.mine.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;import com.othp.core.config.CustomOAuthEntryPoint;@Configuration
@EnableResourceServer //@这个注解就决定了这是个资源服务器。
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {@Autowiredprivate CustomOAuthEntryPoint customOAuthEntryPoint;@Overridepublic void configure(HttpSecurity http) throws Exception {//post请求默认的都开启了csrf的模式,所有post请求都必须带有token之类的验证信息才可以进入登陆页面,这边是禁用csrf模式http.csrf().disable();http.authorizeRequests() //方法有多个子节点,每个匹配器按其声明的顺序进行考虑。.antMatchers(//waggerui 忽略"/webjars/**","/resources/**","/swagger-ui.html","/swagger-resources/**","/v2/api-docs",//系统使用"/CK030201/*","/Common/getPhoneCode","/SJ030101/*","/Common/getToken")
// .antMatchers("**").permitAll(); //不需要认证http.authorizeRequests() .anyRequest().authenticated(); //用户进行身份验证}@Overridepublic void configure(ResourceServerSecurityConfigurer resources) throws Exception {//bearer token的验证,异常自定义返回resources.authenticationEntryPoint(customOAuthEntryPoint);}}
3.调用相应接口。传错误的bearer
二、token获取时,账号密码错误异常自定义
待更新。。。
Oauth2的异常处理,统一封装相关推荐
- feign返回结果统一处理_SpringCloud异常处理统一封装我来做-使用篇
SpringCloud异常处理统一封装我来做-使用篇 简介 重复功能我来写.在 SpringBoot 项目里都有全局异常处理以及返回包装等,返回前端是带上succ.code.msg.data等字段.单 ...
- 在vue项目中:统一封装 Axios 接口与异常处理
在vue项目中:统一封装 Axios 接口与异常处理 参考文章: (1)在vue项目中:统一封装 Axios 接口与异常处理 (2)https://www.cnblogs.com/itgezhu/p/ ...
- .NET Core 返回结果统一封装
本文使用.NET Core Webapi演示! 一:新建.NetCore webapi项目 为了方便开发,简化代码,也为了与前端方便对接,需要对接口服务返回结果进行统一处理. 二:定义返回结果结构 我 ...
- 接口响应时组装响应json_企业实战之spring项目《接口响应体格式统一封装》
前言 在之前的文章中我们有介绍过,如何更好.更简单的写好一个接口(接口返回值篇),今天的这篇文章我们主要介绍,怎么统一处理下接口的返回格式问题. 问题分析 我们先来分析下我们所面临的问题在哪里,然后接 ...
- 「springcloud 2021 系列」Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权
通过认证服务进行统一认证,然后通过网关来统一校验认证和鉴权. 将采用 Nacos 作为注册中心,Gateway 作为网关,使用 nimbus-jose-jwt JWT 库操作 JWT 令牌 理论介绍 ...
- Spring Security+OAuth2自定义异常处理
前面我们使用 Spring Security+OAuth2做认证授权时,默认返回都是提供好的默认返回格式,返回结果不是很友好,大体如下: {"error": "inval ...
- springboot统一封装返回结果
前言 在项目框架整合阶段,为了更优雅的封装后端返回结果,便于前后端联调,通常需要对后端的返回值进行一定的封装处理,下面介绍2种比较实用的方式 方式1:常规处理 定义一个枚举类,主要包括返回的code和 ...
- bcb异常处理显示错误行号_SpringBoot系列(七)- springboot 错误异常处理统一办法
步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:HelloController步骤4:GlobalExceptionHandler步骤5:errorPage.jsp步骤6:重启测试 步骤 1 ...
- 【开源项目】基于FFmpeg的PCM和RGB数据统一封装
项目采用工程模式进行构造. 技术解决难点: 1.编码后的PTS时间一定要赋值.2.音视频封装同步问题,其中涉及到PTS同步问题,例如视频25PTS/s 音频43PTS/s(44100采样率/1024 ...
- 支付宝常用接口统一封装,可直接支付参数使用(适用于H5、PC、APP)
最新文章
- 使用CFURLCreateStringByAddingPercentEscapes进行URL编码
- Filecoin: 影响力容错(PFT)和预期共识(EC)
- 关于Linux的虚拟内存管理
- 同步异步单线程多线程初级理解
- 封装微信分享到朋友/朋友圈js
- 大型网站架构, 缓存的几点
- 计算机准考证要打印多大的纸,2020税务师准考证打印要求 应该用多大的纸打印?...
- 安卓逆向 | 某新闻类APP urlSign
- [下载]Windows 10测试版的新版雅黑字体及切换工具
- 光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TV-Line、Flare/Ghost)
- 去年我国软件业收入4.3万亿元 同比增长16.6%
- 浏览器主页被篡改劫持怎么办
- 一些触动人心的动效设计欣赏
- 配合理lcd的c语言小游戏,51单片机+LCD12864做的贪食蛇和俄罗斯方块小游戏分享
- [附源码]计算机毕业设计JAVA校园征兵及退役复原管理系统
- 使用js,对数值保留小数点后两位的处理(两种情况)
- 【Linux服务器运行jar包】
- irreader RSS 订阅源阅读器工具软件 - 一款强大的网络内容阅读器
- 各种本地存储对比 cookie,localStorage,sessionStorage,indexDB以及他们和vuex的区别
- 五年高考三年模拟暗部软件库_8款实用的手机学习软件推荐,高中生学习必备!...
热门文章
- pythondebug教学_python debug的使用方式
- 推荐几个前端模板下载站
- 超好用的开源 IP 地址管理系统,告别传统 Excel 统计方式!
- Eplan破解文件名称说明:
- php增加md5加密的方法_php进行md5加密简单实例方法
- 别再苦恼电脑录屏软件哪个免费了,试试这几款吧
- 高斯09linux教程,Gaussian 09的安装与使用
- 主力吸筹猛攻指标源码_通达信大于9000手大单指标公式,主力吸筹猛攻指标源码...
- 会议OA项目之我的审批(查询会议签字)
- VC6.0内存泄露检测工具