Spring Security权限配置

zookeeper未授权访问漏洞修复 zookeeper进行服务ACL限制访问。 阅读详情

1、通过WebSecurityConfigurerAdapter配置类配置权限

    public void configure(HttpSecurity httpSecurity) throws Exception {
//        httpSecurity.exceptionHandling().accessDeniedPage("/403");   /* 配置没有权限访问条状自定义页面 */
        httpSecurity.authorizeRequests()  /* 指定哪些url可以访问,那些不能访问 */
                .antMatchers("/test/index","/user/login").permitAll()    /* 设置那些路径不需要认证可以访问 */
                .antMatchers("/test/hello").hasAnyRole("manager,monitor")   /* 跟具已有角色判断是否可以访问这个页面 */
//                .antMatchers("/test/hello").hasRole("manager")     /* 跟具已有角色判断是否可以访问这个页面 */
//                .antMatchers("/test/hello").hasAnyAuthority("admin","manager") /* 只要有拥有其中一个权限即可访问这个页面 */
//                .antMatchers("/test/hello").hasAuthority("admin")    /* 当前用户登录只有具有admin权限才可以访问这个路径 */
                .anyRequest().authenticated();   /* 所有请求都可以访问 */
    }

1)、hasAnyRole(“manager,monitor”)
可以配置多个角色,只要有其中一个角色就有权限访问。

2)、hasRole(“manager”)
只能配置一个角色,跟具已有角色判断是否可以访问这个页面

注意:在配置角色时请注意要在角色前加ROLE_

3)、hasAnyAuthority(“admin”,“manager”)
可以配置多个权限,通过其中一个权限即可访问这个页面

4)、hasAuthority(“admin”)
只能配置一个权限,录只有具有该权限才可以访问这个路径

2、通过注解配置权限

@Controller
@RequestMapping("/test")
@EnableGlobalMethodSecurity(securedEnabled=true,prePostEnabled=true)        /* 开启security注解 */
public class TestController {
    @Secured({"ROLE_manage","ROLE_admin"})  /* 只要拥有manage或admin其中一个角色就可以使用这个方法 */
    @RequestMapping("testSecured")
    @ResponseBody
    public String testSecured(){
        System.out.println("testSecured.....");
        return "testSecured ok";
    }


    @RequestMapping("testPreAuthorize")
    @ResponseBody
    @PreAuthorize("hasAnyAuthority('adminaaaa')")   /* 在方法调用之前验证是否有admin权限,没有则无法调用该方法 */
    public String testPreAuthorize(){
        System.out.println("PreAuthorize......");
        return "PreAuthorize ok";
    }

    @PostAuthorize("hasAnyAuthority('admin2')")   /* 在方法执行后再进行权限验证,适合验证带有返回值的权限 */
    @RequestMapping("testPostAuthorize")
    @ResponseBody
    public String testPostAuthorize(){
        System.out.println("PostAuthorize......");
        return "PostAuthorize ok";
    }

    @PreAuthorize("hasAnyAuthority('admin')")
    @PostFilter("filterObject.username == 'zhansan'")    /* 如果有权限满足条件则过滤响应结果 */
    @ResponseBody
    @RequestMapping("testPostFilter")
    public List<Users> testPostFilter(){
        List<Users> list = new ArrayList<>();
        list.add(new Users(1,"zhansan","123"));
        list.add(new Users(2,"lisi","123"));
        System.out.println(list);
        return list;    //[{"id":1,"username":"zhansan","password":"123"}]
    }

    @RequestMapping("testPreFilter")
    @PreAuthorize("hasAnyAuthority('admin')")
    @PreFilter(value = "filterObject.id %2 == 0")   /* 满足条件,对于参数数据进行过滤处理 */
    @ResponseBody
    public List<Users> testPreFilter(List<Users> list1){
        List<Users> list2 = new ArrayList<>();
        list2.add(new Users(10,"十","12345"));
        list1.addAll(list2);
        return list1;
    }

}

1)、@Secured({“ROLE_manage”,“ROLE_admin”})
配置角色务必在角色名之前加ROLE_,只要拥有其中一个角色就可以使用这个方法

2)、@PreAuthorize(“hasAnyAuthority(‘adminaaaa’)”)
在方法调用之前验证是否满足调用配置权限的方法或者是公式,没有则无法调用该方法

3)、@PostAuthorize(“hasAnyAuthority(‘admin2’)”)
在方法执行后再进行验证是否满足调用配置权限的方法或者是公式,没有则无法返回结果跳转403页面,适合验证带有返回值的权限

5)、@PostFilter(“filterObject.username == ‘zhansan’”)
如果有权限则过滤并返回满足条件的响应结果,一般用于对集合的处理

6)、@PreFilter(value = “filterObject.id %2 == 0”)
如果有权限则过滤并传入满足条件的参数,一般用于对集合的处理

注意:使用1、2、3注解时务必在类上使用@EnableGlobalMethodSecurity(securedEnabled=true,prePostEnabled=true) 注解

zookeeper未授权漏洞复现及处理 不知道你有没有注意,zk服务端启动后,默认会启动这几个具有world和cdrwa权限的znode,“/” "/zookeeper" "/zookeeper/config"和"/zookeeper/quota"(根据zookeeper的版本不同可能存在不同,并且这几个节点虽然具有world和cdrwa权限,但是是无法删除的,不知道为什么,好在我们可以给它设置ACL列表。重要的是构建环境把我在配置文件配置的user信息给删掉了(我不知道)才开始跑的,更坑的是它运行完后直接清除日志了,哪里错了都看不到。 阅读详情

相关推荐

修复zookeeper未授权访问漏洞

【代码】修复zookeeper未授权访问漏洞。

qq_28392947的博客 4069

zookeeper未授权访问漏洞处理

zookeeper未授权访问漏洞处理

weixin_50016127的博客 1万+

Spring Security之基于方法配置权限

基于方法的权限配置的介绍,包括使用场景和设计以及其实现原理

Evan_L的博客 2802

未授权访问:ZooKeeper 未授权访问漏洞

zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。 Zookeeper的默认开放端口是2181。 Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。

qq_68163788的博客 5291

Spring Security如何实现动态Url权限配置

参考文章:https://segmentfault.com/a/1190000010672041 因为Spring Security默认都是在程序的配置类或者配置文件写死哪些资源受哪些角色(权限)控制,要想随时更改就很麻烦,所以着手把它修改为从数据库中动态读取 一、构建表 数据库我构建了role和url两张表,分别储存角色信息和保护资源分配信息 @Entity public class Role ...

weixin_41641941的博客 1155

Spring Security配置权限:应用限制

Spring Security配置权限:应用限制1、匹配器说明2、使用匹配器方法选择端点2.1 控制器类的定义2.2 配置类的定义2.3 测试2.4 补充:让所有经过身份验证的用户都可以访问其他请求3、三种匹配器3.1 使用MVC匹配器选择用于授权的请求3.1.1 为其配置授权的4个端点的定义3.1.2 UserDetailsService定义3.1.3 用于第一个场景/a的授权配置3.1.4 调用测试3.1.5 其他配置3.2 使用Ant匹配器选择用于授权的请求3.2.1 控制器类种/hello端点的定义

冲出仁川,走出马德里,故事还会再继续 1350

Spring Security 权限配置详解

Spring Security 权限配置详解

zru_9602的博客 1166

Oracle19c-集群节点重新添加

Oracle RAC集群在极端情况下,如硬件、主机,集群软件损坏,导致集群节点永久无法使用,需要对集群节点进行修复,删除节点集群信息并重新加入集群,以恢复集群原有的架构。 本文主要讲述一套两节点的Oracle19c RAC集群,节点一orcl01由于主机异常无法正常启动,在对主机进行重装之后,需要将orcl01节点重新加入集群的操作步骤。环境信息: 操作系统:Linux 7 RAC集群:19C 主机节点:orcl0...

sinat_36757755的博客 2352

Spring Security05 - 配置权限

Spring Security05 - 配置权限

qq_43350524的博客 995

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2331

假新闻检测论文分享(17)CAFE(Cross-modal Ambiguity Learning for Multimodal Fake NewsDetection)

本文首先从信息论的角度对跨模态歧义性学习问题进行形式化描述,利用不同单模态特征之间的分布散度量化其歧义性;然后,提出了一种模糊度感知的多模态假新闻检测方法CAFE。CAFE通过自适应地聚合单模态特征和跨模态关联,即在跨模态歧义性较弱时依赖单模态特征,在跨模态歧义性较强时参考跨模态关联,从而提高假新闻检测精度。提出了跨模态歧义学习问题,这是多模态假新闻检测的一个关键挑战,并提出了一种基于KL散度的方法,通过估计其特征分布的散度来量化文本和图像之间的歧义。

weixin_41964296的博客 1725

spring security动态配置url权限认证

本文转载自---------------------------------------- https://www.jianshu.com/p/0a06496e75ea 本文介绍的spring security动态配置url权限认证基于的是spring-boot-2.0.0、spring-security 5.X来编写的。 笔者浏览完spring security官方文档之后,发现并没有详细...

shuangyueliao的专栏 6564

【银河麒麟桌面系统】自定义ISO镜像操作实践

本文详细介绍了麒麟操作系统Kylin-Desktop-V10-SP1的ISO镜像定制流程。通过挂载原始镜像、解压文件系统、进入chroot环境进行系统定制(包括文件替换和软件管理),最终重构squashfs并生成新ISO。关键步骤包括:挂载镜像到mnt目录、解压filesystem.squashfs、替换源配置文件、在chroot环境中清理系统、重新生成squashfs文件以及使用mkisofs命令创建新镜像。文章特别标注了x86和ARM架构的不同命令参数,并提供了安装测试验证方法。整个过程展示了从原始镜像

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 2342

spring security 动态配置权限

spring security 动态配置权限前言一、数据表二、用到一个操作的Menu的Mapper二、自定义FilterInvocationSecurityMetadataSource定义CustomFilterInvocationSecurityMetadataSource实现FilterInvocationSecurityMetadataSource三、自定义FilterInvocationSecurityMetadataSource总结 前言 使用HttpSecurity配置的认证授权规则还是不够

hzw0808的博客 471

C语言读取CSV文件的方法1

逗号分隔值文件格式(CSV),以纯文本形式存储表格数据,它是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。本文介绍利用C语言标准库中的一个字符串处理函数 strtok()来对CSV文件内容进行读取的基本方法

白马负金羁 1万+

OpenClaw界面操作手册:命令行与交互模式的正确打开方式

"test": {"description": "运行项目的测试套件","prompt": "请执行项目的测试命令,并分析测试结果。如果有失败的测试,请提供修复建议。},"lint": {"description": "运行代码检查","prompt": "请运行代码检查工具,分析所有警告和错误,并提供修复建议。},"doc": {"description": "为当前文件生成文档","prompt": "请为当前打开的文件生成完整的API文档,包括函数说明、参数描述、返回值类型和使用示例。

gaoxiang_120的专栏 3148

如何配置swagger_Swagger权限认证下:基于Spring Security

接上篇《Apache Shiro 接管Swagger认证授权》,有热心网友反应Apache Shiro似乎太简单。针对这个问题,个人不做任何评价(一切技术服务于需求)。今天主要分享内容为:在Spring Security下如何接管Swagger的认证授权工作。1.添加依赖假定你对Swagger和Spring Security已经有一定的基础,现在开始检查你的项目中是否添加了Swagger和Spri...

weixin_42561464的博客 4517

Spring AI 项目实战(十八):Spring Boot + AI + Vue3 + OSS + DashScope 实现高效语音识别系统(附完整源码)

本文介绍基于 Spring Boot AI 集成阿里云 OSS 与 DashScope 语音识别 API 的高效语音识别系统。该系统通过云端存储音频文件,解决传统本地存储的性能瓶颈与存储压力,支持同步 / 异步语音转文本,实现文件自动生命周期管理。文中详述技术选型、架构设计、核心代码实现(含前后端及配置)、部署流程,展现其高并发处理、可靠文件管理能力,适用于客服、教育等企业级场景,为语音识别应用提供实用解决方案。

博客 1537

Spring Security——基于数据库的动态权限配置

Spring Security——基于数据库的动态权限配置 一、前言 在上一篇博客里,实现了基于数据库的用户信息认证,但是并没有实现动态权限的配置,即每个角色能访问哪些资源路径,属于硬编码,是在代码中写死的,无法做到动态修改。在本篇会讲述如何在SpringSecurity中做到基于数据库的动态权限配置。 二、数据库建表 在已经实现了基于数据库的用户信息验证下,即已经创建了user表、role表、u...

qq_40151840的博客 1518

第5.2章 【自动驾驶行业融合定位核心】:手把手详解ESKF(误差卡尔曼滤波)理论公式及代码

自动驾驶定位中的ESKF(误差卡尔曼滤波)技术是解决IMU累积误差的关键,通过分离名义状态与误差状态实现高精度定位。其核心步骤包括:1)名义状态递推(位置/速度/姿态的基础物理计算);2)误差传播建模(雅可比矩阵F量化误差影响);3)协方差更新(评估定位不确定性)。ESKF在GNSS信号丢失(如隧道场景)、无卫星定位(地下车库)等场景发挥重要作用,通过融合多传感器数据维持定位精度。工程实现需解决零偏校准、协方差投影等关键问题,噪声参数需通过数据标定而非随意设置。掌握ESKF原理与实现是自动驾驶定位工程师的核

行知SLAM 706

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

spring security权限配置问题

spring security

m1f2c3的专栏 404

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Security 角色权限&资源权限配置 学习笔记

本文介绍了基于Spring Security实现RBAC权限控制的两种方式:角色权限和资源权限。角色权限通过@PreAuthorize注解配合hasRole()实现粗粒度控制,适合简单场景;资源权限则通过权限编码(如product:list)实现细粒度控制,需设计权限表、角色权限关联表等数据库结构,在Mapper层查询用户权限并封装为SimpleGrantedAuthority,最后通过hasAuthority()注解进行校验。两种方式各有优劣,角色权限简单但颗粒度粗,资源权限复杂但控制精准,开发者可根据实

2603_95369890的博客 483

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring Security的用户登录和权限配置

这篇博客可以让我们了解到,如何将用户的登录信息(用户名、密码和角色)放入内存中,并配置不同的角色可以访问不同的路径 配置用户名、密码和角色 我们只需要重写WebSecurityConfigurerAdapter的userDetailsService()方法即可 @Bean protected UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsM

yuanyuneixin1的专栏 1289

Spring Security之动态配置资源权限

  在Spring Security中实现通过数据库动态配置url资源权限,需要通过配置验证过滤器来实现资源权限的加载、验证。系统启动时,到数据库加载系统资源权限列表,当有请求访问时,通过对比系统资源权限列表和用户资源权限列表(在用户登录时添加到用户信息中)来判断用户是否有该url的访问权限。   在配置验证过滤器时需要的配置项有如下几个: filterSecurityInterceptor:通过继承AbstractSecurityInterceptor并实现Filter接口自定义一个验证过滤...

Arthur_Holmes的博客 1808
上一篇: Spring Security登录注销配置
下一篇: Spring Security自动登录笔记
magicproblem
博客等级 码龄7年 22粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值