springboot 简单集成 spring security(二)权限控制

spring boot —— Spring Security定制权限管理 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤。类似于启动spring boot项目后,会先验证,如果没有登陆,会跳转到框架默认登录页面(封装好的,不用自己写)如果没有配置登录用户,那么终端会自动生成用户并打印随机生成的用户密码,如果有配置,就不会生成。... 阅读详情
简介

上一篇我们实现了springboot简单的集成了spring security,实现了在用户想要实现某一操作时需要进行登陆认证,但是在登陆后用户能够进行所有想要的操作,这并不是我们想要的,我们需要的是当用户访问后,用户能够操作的是我们能够控制他能够操作接口。这里我们就需要进行权限的控制。

1、内存中实现权限控制

在上一篇中我们在实现用户认证后就没有进行相关的操作,这里我们想要在内存中实现权限认证。需要在securityConfig中重写configure(HttpSecurity http)方法,在接口中进行设置。

configure(HttpSecurity http)

在当前方法中能够实现对接口访问权限设置。

@Override
    protected void configure(HttpSecurity http) throws Exception {
   
   
        http
            .authorizeRequests()
            //设置所有认证后的用户都能够访问所有接口,不需要任何权限
                .anyRequest().authenticated()
            //设置不需要登陆认证就能够访问登陆接口    
            .and()
                .formLogin()
                    .permitAll()
            // 设置不需要登陆认证就能够访问登出接口           
            .and()
                .logout()
                    .permitAll();
    }

如果我们想要对接口进行权限控制这里我们就要将

 //.anyRequest().authenticated()

注释掉,然后再添加

.antMatchers("").hasAnyAuthority("")

然后添加想要进行权限控制的接口和设置访问当前接口需要的权限我们这里只写了/selByPhone接口所以我们的代码如下

.antMatchers("/selByPhone")
    //设置访问当前接口需要的权限
    .hasAnyAuthority("ROLE_query_user")

这里我们设置当前接口需要的权限是"ROLE_query_user"。完整的securityConfig的configure(HttpSecurity http)方法

@Override
    protected void configure(HttpSecurity http) throws Exception {
   
   
        http
            .authorizeRequests()
//                .anyRequest().authenticated()
            //配置访问当前接口需要的权限
            .antMatchers("/selByPhone")
                .hasAnyAuthority("ROLE_query_user")
            .and()
                .formLogin()
                    .permitAll()
            .and()
                .logout()
                    .permitAll();
    }

然后再数据库中将用户的权限设置为query_user
然后访问selByPhone接口
!](https://img-blog.csdnimg.cn/88043ebba4ad4e3185f343412f8a1bc0.jpeg)

首先登陆没有访问权限的用户
(图片)

登陆后我们能够看到当前用户没有访问权限spring security返回了403页面。
图片

我们登陆有权限的用户,我们看到能够成功登陆(图片)

当然这种设置权限的方式并不是我们想要的,我们不能在写完接口后然后再securityConfig中进行配置,每次都进行这种配置并不是我们需要的,这时我们希望能够灵活的配置权限控制。小编这里基于jdbc进行动态的权限配置。当然并不只这一种方式,比如枚举类等等。

2、基于jdbc动态的权限控制

想要实现基于jdbc动态的权限控制,我们需要拦截请求获取到当前要访问的接口名称,然后再去查询想要访问当前接口需要的权限。
想要实现拦截请求的功能那我们就需要创建一个连接器,这里我们实现Filter完成权限拦截器。然后实现SecurityMetadataSource(安全元数据),完成查询当前需要的权限的功能,这里面我们使用他的子类FilterInvocationSecurityMetadataSource。然后我们再实现AccessDecisionManager(决策访问管理器)在这里我们判断当前登陆的用户是否拥有访问该接口的权限。

权限拦截器
/**
 * @title: PermissionInterceptor
 * @Author zzm
 * @Date: 2022/4/14 19:49
 * @Version 1.0
 */
@Service
public
Spring Boot 集成权限管理Spring Security框架 Spring Security是Spring项目的一部分,专门为Java应用程序提供全面的安全服务。它可以帮助开发者实现各种安全需求,如身份验证、角色和权限管理、会话管理等。Spring Security提供了一种强大的和可高度自定义的权限管理方式,开发者可以根据业务需求定制权限规则,实现精细化的权限控制。要自定义Spring Security配置,需要创建一个配置类,该类需要继承WebSecurityConfigurerAdapter类,并覆盖其中的方法。 阅读详情

相关推荐

springboot + spring security + jwt实现api权限控制

1、在pom.xml中添加security和jwt的相关依赖,并在启动类上添加注解@EnableWebSecurity <!-- 权限相关依赖(security和jwt)--> <dependency> <groupId>org.springframework.boot</groupId> ...

qq_35494808的博客 2万+

Springboot + Spring Security 实现前后端分离登录认证及权限控制

Springboot + Spring Security 实现前后端分离登录认证及权限控制 前言     关于Spring Security的概念部分本文不进行赘述,本文主要针对于对Spring Security以及Springboot有一定了解的小伙伴,帮助大家使用Springboot + Spring Security 实现一个前后端分离登录认证的过程。     文章会一步一步循序渐进的带大家敲一遍代码。最终的代码请看最后。     代码中我用到了插件lombok来生成实体的getter/set

m0_68850571的博客 1万+

SpringBoot+Spring Security+JWT(三更草堂)

Springsecurity是Spring家族中的一个安全管理框架。相比与另外一个安全框架shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。—般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作而认证和授权也是SpringSecurity作为安全框架的核心功能。

Roc的博客 8537

Spring boot+Spring security+JWT实现前后端分离登录认证及权限控制

基本上没讲什么底层实现,这篇是使用篇,后续会出SpringSecurity的底层源码讲解,并且如果本帖有问题的有疑问的读者可以在评论区留言,本人会积极处理。您的支持是我最大的动力,本人一直在努力的更新各种框架的使用和框架的源码解读~!先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。httpshttpshttps。...

m0_54849806的博客 6506

SpringBoot+Vue.js项目中使用Spring Security+JWT实现登录权限控制

目标和需求 我们的目的是在 SpringBoot+Vue.js 这样的前后端分离的项目中增加一个登录权限控制模块。这个模块的需求如下: 包含多个角色,每个角色所具有的权限不同(可以看到不同的菜单和页面) 对整个系统做登录控制,即未登录强制跳转到登录页面 登出功能 实现方案: 登录控制使用 Spring Security 框架,登录控制使用 JWT 实现,登录成功后使用 JWT 生成 token...

Alan-zzx的博客 7145

集成springboot-starter-security

集成security 首先第一步,搭建最基本的boot,我们来看一下效果。  移除点击此处添加图片说明文字 ​ 报错,粘出来:  移除点击此处添加图片说明文字 ​ 原来是没有返回的页面导致,我们把没用的类和页面删掉。这是个小插曲哈,见谅。对了,仔细了解了一下,项目暂时还不需要用到druid,不那么着急搭建druid框架, 先把security集成进

大壮的博客 7680

SpringBoot专题学习Part30:SpringBoot整合Spring Security实现Web权限控制【完结】

一、概述 目前流行的安全框架有Shiro和Spring Security Shiro较简单易用 Spring Security较复杂 但功能强大 Spring Security能无缝整合SpringBoot 因此SpringBoot底层使用的是SpringSecurity Spring Security是针对Spring项目的安全框架 其可以实现强大的web安全控制 对于安全控制 仅需引入spri...

"✧treasure mountain✧" 9218

SpringBoot中使用Spring Security实现权限控制

Spring Security,这是一个专门针对基于Spring的项目的安全框架,它主要是利用了AOP来实现的。以前在Spring框架中使用Spring Security需要我们进行大量的XML配置,但是,Spring Boot针对Spring Security也提供了自动配置的功能,这些默认的自动配置极大的简化了我们的开发工作,我们今天就来看看这个吧。创建Project并添加相关依赖数据库使用My

椭圆的博客 2万+

SpringBoot 精通系列-如何使用Spring Boot Security进行权限控制

导语   如何设计一个高效健全的安全策略是保证企业数据安全的的关键,笔者见过设计的比较优秀的安全管理策略也见过设计的比较Low的安全管理策略。如何保证高效的安全策略,在Java中Spring官方提供了安全策略组件Spring Security当然还有很多的安全策略的框架例如Shiro等。下面就对Spring Security进行详细说明。 文章目录Spring Security介绍入门小例子第...

初学者 2343

SpringBoot整合权限控制SpringSecurity.docx

SpringBoot整合权限控制SpringSecurity

微带功分器设计与ADS-EM联合仿真实战解析

本文详细解析了微带功分器设计与ADS-EM联合仿真的实战技巧,涵盖特性阻抗计算、ADS原理图设计、版图生成与EM仿真等关键步骤。通过实际案例分享,帮助工程师掌握射频电路设计中的核心技术和调试方法,提升功分器设计效率与性能。

weixin_29280219的博客 449

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 440

STM32F103C8T6实战指南:从零搭建最小系统与GPIO控制

本文详细介绍了STM32F103C8T6微控制器的实战应用,从零开始讲解如何搭建最小系统并进行GPIO控制。内容涵盖电源电路设计、时钟配置、GPIO工作模式详解及实战项目开发,帮助初学者快速掌握这款ARM Cortex-M3内核微控制器的核心开发技能,适用于物联网设备和嵌入式系统开发。

lemon的博客 628

ESP32-C5硬件设计全链路指南:ADC/SDIO/USB/RF PCB实战

模数转换器(ADC)和高速外设接口是嵌入式系统硬件设计的核心基础。理解ADC通道映射、输入阻抗特性与抗干扰布线,是保障传感器采样精度的前提;掌握SDIO、USB差分信号的阻抗控制、端接策略与电源去耦方法,则直接决定通信可靠性与EMC性能。在Wi-Fi 6/Bluetooth 5.3双模SoC如ESP32-C5中,ADC复用约束、USB与SDIO管脚冲突、RF匹配网络调校、四层板叠层规划等工程细节,共同构成高成功率PCB落地的关键技术栈。本文聚焦ESP32-C5平台,系统梳理从模拟前端到射频输出的硬件设计规范

weixin_35756130的博客 344

医院网络设计(完整文档+思科拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。

qq1325513482的博客 2万+

上万条对话白分析了?智能客服质检避坑指南:90%团队倒在这些误区

当前客服质检普遍存在投入产出失衡的现象,根源在于十大误区:过度关注单点技术指标而忽视端到端解决能力、僵化的话术模板限制AI应变、数据孤岛阻碍知识进化、盲目追求拟人化牺牲效率、传统整改机制跟不上机器速度等。破局需重构质检体系,包括建立决策树质检法、设计复杂问题测试集、构建实时数据闭环、重置AI专属评价指标、实施分钟级热修复机制等。关键在于将质检从被动纠错升级为主动赋能,通过根因分析、场景化反馈、标准化评分和数据驱动优化,打造"问题诊断-改进-验证"

2202_75469062的博客 1540

华为OD机试真题-查找单入口空闲区域(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【查找单入口空闲区域】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 查找单入口空闲区域。

qq_45776114的博客 1266

<IBM AIX> 《HACMP 实用手册和命令 HA切换手册》 - 鸿篇巨制,全网最全

操作命令检查磁盘预留策略要将磁盘预留策略更改为 no_reserve集群状态实用程序查看集群状态是否正常SMIT System Management (C-SPOC)Cluster ServicesShow Cluster Services 面板上的选项或 lssrc 命令查看资源组、资源组对应的VG、资源组对应的APPLICATION SERVER# ./cldispsmit常用命令F3退出F4列表Esc+6或者F6查看命令Esc+7或者F7选择多项检查状态。

Else 的博客 3359

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: springboot 简单集成 spring security(一)
耗子尾汁123
博客等级 码龄9年 1粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耗子尾汁123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值