自定义@AnonymousAccess注解

news2024/9/24 1:24:07

一.目的:

        自定义@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

 //查找匿名标记URL
        Map<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")
    @ResponseBody
    public 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.coloradmin.cn/o/1910547.html

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

相关文章

软件项目运维服务方案(Word原件)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件文档全套下载&#xff1a;本文末个人名片直接获取或者进主页。

【峟思】智能一体化水位监测系统的创新应用与优势解析

在全球气候变化与城市化加速的双重挑战下&#xff0c;极端天气事件频发&#xff0c;城市内涝、河流泛滥等水位灾害对社会安全和经济稳定构成了严峻威胁。为有效应对这些挑战&#xff0c;智能一体化水位监测系统应运而生&#xff0c;凭借其高效、精准、智能的技术特性&#xff0…

PostgreSQL 里怎样解决多租户数据隔离的性能问题?

文章目录 一、多租户数据隔离的性能问题分析&#xff08;一&#xff09;大规模数据存储和查询&#xff08;二&#xff09;并发访问和锁争用&#xff08;三&#xff09;索引维护成本高&#xff08;四&#xff09;资源分配不均 二、解决方案&#xff08;一&#xff09;数据分区&a…

行至第11年,追光动画距离“中国皮克斯”还有多远?

百花奖提名名单公布后&#xff0c;入围最佳影片大奖的唯一一部动画电影《长安三万里》&#xff0c;竟然成为了获奖呼声最高的电影。 去年暑期档上映的《长安三万里》以18.24亿票房一跃成为中国影史动画电影票房亚军&#xff0c;虽然这个数据在今年春节档被《熊出没逆转时空》超…

【苍穹外卖】Day2 手把手敲完细节

目录 1. 新增员工 1.1 需求分析和设计 1.2 代码开发 ①定义DTO类&#xff1a;(在sky-pojo里&#xff09; ②EmployeeController中创建新增员工方法save() ③EmployeeService里声明save方法&#xff08;altenter&#xff09; ④EmployeeServiceImpl中实现save方法 ⑤在E…

喜讯丨美格智能通过国际EcoVadis平台认证企业社会责任并荣获承诺奖章,彰显可持续发展实力

作为全球领先的无线通信模组及解决方案提供商&#xff0c;美格智能在社会责任领域再创新高。近日&#xff0c;美格智能凭借在企业社会责任和可持续性采购发展方面的卓越表现&#xff0c;通过国际在线权威评价机构EcoVadis对公司环境、劳工与人权、商业道德、可持续采购等方面审…

线性回归笔记

https://blog.51cto.com/u_16213589/7682076 残差图 多元回归-最小二乘法-残差分析笔记 一.多元线性回归模型的假设 我们需要进行以下六个假设&#xff0c;这些假设是经典的多元线性回归模型有效的前提&#xff1a; 1、因变量Y和自变量X1&#xff0c;X2&#xff0c;…&#…

文献阅读:基于测序的空间转录组方法的系统比较

文献介绍 文献题目&#xff1a; Systematic comparison of sequencing-based spatial transcriptomic methods 研究团队&#xff1a; 田鲁亦&#xff08;广州实验室&#xff09;、刘晓东&#xff08;西湖大学&#xff09; 发表时间&#xff1a; 2024-07-04 发表期刊&#xff…

Python自动化测试系列[v1.0.0][自动化测试报告]

BeautifulReport测试报告 获取BeautifulReport模块 BeautifulReport 源码Clone地址为 BeautifulReport &#xff0c;其中BeautifulReport.py和其template是我们需要的 BeautifulReport 如下代码是BeautifulReport.py的源码&#xff0c;其中几个注释的地方需要注意&#xff…

C编程使用clock函数实现计算一段代码的执行时间:毫秒单位

一、函数原型 在Linux系统中&#xff0c;clock()函数是一个非常重要且常用的函数&#xff0c;它主要用于测量程序运行的CPU时间。这个函数是C/C语言中的一个标准函数&#xff0c;其原型定义在<time.h>头文件中。以下是对clock()函数的详细解析&#xff1a; #include <…

Khoj 一个处在免费领域应用最佳的AI对话工具

文章目录 1. 了解 khoj1.1 文档1.2 价格1.3 代理人 2. 特点3. 应用3.1 全文搜索3.1.1 ChatGPT没有3.1.2 Khoj 3.2 APP 对话3.2.1 khoj & whatsApp3.2.2 ChatGPT 3.3 摘要总结3.3.1 ChatGPT3.3.2 Khoj 3.4 图片分析3.4.1 chatgpt3.4.2 khoj 3.5 格式转换3.5.1 ChatGPT3.5.2 …

基于STM主题模型的主题提取分析-完整代码数据

直接看结果: 代码: import re from collections import defaultdict import random import matplotlib.pyplot as plt import numpy as npimport pandas as pd import numpy as np import re from sklearn.feature_extraction.text import CountVectorizer from nltk.corpus…

c++ 多边形 xyz 数据 获取 中心点方法

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…

聚类分析方法(二)

目录 三、层次聚类方法&#xff08;一&#xff09;层次聚类策略&#xff08;二&#xff09;AGNES算法&#xff08;三&#xff09;DIANA算法 四、密度聚类方法&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;算法描述&#xff08;三&#xff09;计算实例&#xf…

flowable7.0.1常见问题解答

说明&#xff1a;本文采用Q-A的形式&#xff0c;持续更新... Q&#xff1a;flowable中任务审批时在taskCompleted监听中获取当前审批提交的表单内容&#xff1f; A&#xff1a;taskService.setLocalVirables(Map<String,Object> variables)&#xff1b;也可以通过添加缓…

MVC 可以把通用命名空间放在配置文件

这种方式的引入,是将命名空间引入到所有视图中了,不需要在使用using单独引用了。

【大数据】什么是数据湖?一文揭示数据湖的本质

很多人跟我一样&#xff0c;对于数据湖充满好奇&#xff0c;也许还读了不少数据湖文章&#xff0c;但无论别人怎么说&#xff0c;你还是会觉得难以把握数据湖的本质。 有些人会望文生义说&#xff0c;数据湖嘛&#xff0c;就是什么东西都可以往里面扔&#xff0c;特别是对非结构…

奇瑞新能源车型EQ2在驾校领域的CAN总线数据应用

在当今这个快速发展的汽车时代&#xff0c;科技的进步不仅推动了汽车性能的提升&#xff0c;也为驾驶培训领域带来了革命性的变化。其中&#xff0c;奇瑞EQ2作为一款电动汽车&#xff0c;其在驾校领域的应用尤其值得关注&#xff0c;特别是其采用的CAN总线技术。CAN总线&#x…

【面向就业的Linux的基础】从入门到熟练,探索Linux的秘密(十三)-常用的命令

上述是一些系统命令的基本练习&#xff0c;可以当做日常笔记学习收藏一下&#xff01;&#xff01;&#xff01; 目录 前言 一、文件权限 二、文件检索 三、查看文件内容 四、用户相关 五、工具 六、安装软件 七、作业​​​​​​​ 总结 前言 上述是一些系统命令的…

MATLAB实现-基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测(多输入多分类)

MATLAB实现-基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测&#xff08;多输入多分类&#xff09; 基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测&#xff08;多输入多分类&#xff09; 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行…