自定义@AnonymousAccess注解

一.目的:

        自定义@AnonymousAccess注解,可以直接在controller上添加该注解使请求绕过权限验证进行匿名访问,便于快速调用调试以及部分不需要进行安全验证的接口。而不是每次都需要去SecurityConfig文件中进行修改。

二.流程:

        

三.实现

1.自定义注解 @AnonymousAccess的java类

package com.hng.config.security;import java.lang.annotation.*;/***  用于标记匿名访问方法*/
@Inherited
@Documented
@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AnonymousAccess {}

 2.在security的配置类的 configure(HttpSecurity httpSecurity)方法中配置匿名访问

//TODO 第一步,在configure方法开始先收集所有的带匿名标记的url//查找匿名标记URLMap<RequestMappingInfo, HandlerMethod> handlerMethods =applicationContext.getBean(RequestMappingHandlerMapping.class).getHandlerMethods();Set<String> anonymousUrls = new HashSet<>();for (Map.Entry<RequestMappingInfo, HandlerMethod> infoEntry : handlerMethods.entrySet()) {HandlerMethod handlerMethod = infoEntry.getValue();AnonymousAccess anonymousAccess = handlerMethod.getMethodAnnotation(AnonymousAccess.class);if (anonymousAccess != null) {anonymousUrls.addAll(infoEntry.getKey().getPatternsCondition().getPatterns());}}anonymousUrls.forEach(s -> log.warn("可以匿名访问的url:{}", s));//TODO 第二步,在configure方法httpSecurity配置信息上配置第一步收集到的url//添加可匿名访问的接口
.antMatchers(anonymousUrls.toArray(new String[0])).anonymous()

四.使用 

        在需要匿名访问的controller方法上直接添加@AnonymousAccess即可

    @AnonymousAccess@ApiOperation("用户注册")@PostMapping("/register")@ResponseBodypublic ResponseResult<Object> userRegister(@RequestBody RegisterUser registerUser){SysUser user = new SysUser();BeanUtil.copyProperties(registerUser,user);user.setPassword(passwordEncoder.encode("123456"));user.setCreateBy("新用户注册");user.setUpdateBy("新用户注册");sysUserService.addSysUser(user);return ResponseResult.success("用户注册成功,初始密码为【123456】,请尽快修改",user);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用后台管理(二)——项目搭建

目录 前言 一、安装vue-cli依赖 1、使用yarn下载vue-cli 2、使用npm下载 3、检查一下是否下载成功 二、创建项目 1、创建项目&#xff0c;my-app是项目名称 2、 这里选择vue 2&#xff0c;蓝色表示选中的。 3、启动项目 三、下载项目依赖 四、配置项目 1、修改esli…

VS2019_新建窗体应用文件SOP

文章目录 1. 打开VS2. 创建新项目3. 选择Windows窗体应用4. 起名&#xff0c;选位置&#xff0c;框架版本选择4.5及之后&#xff0c;这里选的4.85. 新建完成 1. 打开VS 2. 创建新项目 3. 选择Windows窗体应用 注意要选.NET的 4. 起名&#xff0c;选位置&#xff0c;框架版本…

ps aux命令详解

ps aux 是在 Unix 和 Linux 系统中常用的命令&#xff0c;用于显示当前系统上运行的所有进程的信息。它结合了多个选项来提供详细的进程列表。以下是这个命令的详细解释&#xff1a; 解释 ps aux 命令 ps&#xff1a;这是显示当前系统进程的基本命令。a&#xff1a;显示与终端…

原来Kimi不是不作为,而是在准备大招!

月之暗面Kimi 作为一款我每天都在使用的AI智能助手&#xff0c;是真正的帮助我解决了不少工作及日常创作的一些事情。 它的表现能力也是毋庸置疑&#xff0c;不论是业内还是普通人&#xff0c;10个人当中可能就有9个人在使用Kimi。 而昨天&#xff08;7月8日&#xff09;Kimi…

Civil3D 2025:工程设计的智慧之友

初识Civil3D 2025 当我第一次打开Civil3D 2025时&#xff0c;仿佛置身于湘西的山水之间&#xff0c;那种熟悉而又新奇的感觉扑面而来。Civil3D 2025不仅仅是一款软件&#xff0c;它更像是一位老友&#xff0c;带着温暖和智慧&#xff0c;陪伴我走过每一个设计的日夜。 功能丰…

侯捷C++面向对象高级编程(上)-9-扩展补充:类模板、函数模板及其他

1.static 2.把 ctors 放在 private 区 3.cout 4.class template、类模板 5.function template、函数模板 6.namespace

DDR3 SO-DIMM 内存条硬件总结(二)

上一节我们大概了解了下DDR3的大概使用情况&#xff0c;下来我们再顺藤摸瓜再深入学习下ddr3的使用&#xff0c;我们从下面这张内存条开始&#xff1a; 我们看到第二行2GB 1RX8 PC3-10600S-9-11-B2 具体含义上一节已经讲过了&#xff0c;我们深挖下1R*8&#xff0c;他的含义是…

资料分析笔记整理

提升技巧多做题、少动笔、多分析 资料分析认识 国考一般20题(24~28分钟) 统计材料的类型包括单纯的文字、表格、图形以及由这些元素组成的复合类型材料 文字性材料:(30~60秒) 多段落型文字材料(时间、关键词、结构) 孤立段落文字材料(时间、关键词、标点[。;]) 表…

Java语言程序设计——篇二(2)

Java语言基础 运算符与表达式运算符1、算术运算符2、关系运算符3、逻辑运算符&#xff08; &&、||、 !、&、| 、^&#xff09;4、位运算符&#xff08; >>、<<、>>>、&、|、^、~&#xff09;5、赋值运算符6、条件运算符7、字符串运算符8、…

数字化时代下,财务共享数据分析建设之路

随着人工智能、云计算、大数据、区块链等技术&#xff0c;以及衍生出的各种产品的大发展&#xff0c;使得数字化发展的速度再一次加快&#xff0c;也让数字经济和数字化转型得到了更多人的关注和认可。 在传统经济增长逐渐放缓&#xff0c;市场竞争愈发激烈的局面下&#xff0…

GOJS去除水印

GOJS gojs 去除水印 **查找go.js库搜索下面这段文本 String.fromCharCode(a.charCodeAt(g)^b[(b[c]b[d])%256]) 加入这段文本 if(f.indexOf(GoJS 2.1 evaluation)>-1|| f.indexOf(© 1998-2021 Northwoods Software)>-1|| f.indexOf(Not for distribution or produ…

splice方法的使用#Vue3

splice方法的使用 splice(index,len,item)是vue中对数组进行操作的方法之一&#xff0c;可以用来删除&#xff0c;更新&#xff0c;和增加数组内容 参数: index:数组下标 len&#xff1a;为1或0 item:更新或增加的内容 使用方法&#xff1a; 删除&#xff0c;当参数形式为spli…

Linux内核网络性能问题的追踪(工具篇)

在现代计算环境中&#xff0c;网络性能对于系统的整体性能至关重要。网络瓶颈不仅会影响数据传输速度&#xff0c;还会影响应用程序的响应时间&#xff0c;最终影响用户体验。为了有效地解决网络性能问题&#xff0c;了解和使用各种追踪工具至关重要。另外一方面&#xff0c;造…

MySQL批量插入数据的几种方式

最近在项目中遇到了批量插入数据的一些问题&#xff0c;一般图省事都是利用mybatis或mybatis-plus的saveBatch方法&#xff0c;但这次因为数据过多&#xff0c;出现了一系列的问题&#xff0c;只能手动处理&#xff0c;接下来分享下对于数据量比较大的批量插入&#xff0c;可能…

python的魔法方法

python类中的self是什么&#xff1f; 对象的方法都会有一个self参数&#xff0c;类比于c&#xff0c;self就相当于c的this指针。 由一个类可以生成无数个对象&#xff0c;当一个对象的方法被调用时&#xff0c;对象会讲自身的引用作为第一个参数传给该方法&#xff0c;那么pyt…

CTF-PWN-kernel-栈溢出(retuser rop pt_regs ret2dir)

文章目录 参考qwb2018 core检查逆向调试打包上传测试脚本retuserkernel ropinit_credcommit_creds( prepare_kernel_cred(0) )开启KPTI利用swapgs_restore_regs_and_return_to_usermode开启KPTI利用SIGSEGVrop设置CR3寄存器再按照没有KPTI返回 kernel rop ret2userpt_regs 构造…

2024年浙江省高考分数一分一段数据可视化

下图根据 2024 年浙江高考一分一段表绘制&#xff0c;可以看到&#xff0c;竞争最激烈的分数区间在620分到480分之间。 不过&#xff0c;浙江是考两次取最大&#xff0c;不是很有代表性。看看湖北的数据&#xff0c;580分到400分的区段都很卷。另外&#xff0c;从这个图也可以…

RTOS系统 -- FreeRTOS之任务调度

FreeRTOS中的任务调度 背景介绍 FreeRTOS是一种轻量级的实时操作系统&#xff0c;被广泛应用于嵌入式系统中。它提供了多任务管理功能&#xff0c;包括任务创建、任务调度和任务切换。FreeRTOS的调度器根据任务的优先级和状态自动调度任务&#xff0c;确保系统资源的有效利用…

独立站优势及吸引力分析

随着全球化贸易的不断深入&#xff0c;越来越多的厂商开始寻求更广阔的市场和更高效的销售渠道。独立站作为企业自有的电商网站&#xff0c;正逐渐成为海外贸易的新宠。本文将分析独立站的优势及其对厂商的吸引力&#xff0c;鼓励厂商以建立独立站的方式出海。 一、独立站的定义…

el-image放大图片功能

1.需求&#xff1a;点击图片后放大图片 html代码&#xff1a; <el-imagestyle"width: 100px; height: 100px":src"baseUrl item.id":zoom-rate"1.2":max-scale"7":min-scale"0.2":preview-src-list"srcList"…