SpringBoot - Spring Security详解(二)

Springboot+SpringSecurity内存账户管理 内存用户管理 第一种application配置方式 spring.security.user.name=账号 spring.security.user.password=密码 spring.security.user.roles=角色(USER,ADMIN) 此方法只用于修改初始化默认账号,无法进行多账号的添加管理 第二种常见配置管理 import org.springframework.beans.factory.annotation.Autowired; import org.springframe 阅读详情

应用场景

使用Spring Security完成基于内存增加多个用户,不同的用户有不同的角色,不同的角色有不同的访问权限的场景

具体步骤

①. 用户以及角色的配置
②. 配置URL的访问权限
③. 配置方法对应的URL
通过以上三步即可完成该场景的功能,前两步通过扩展自定义WebSecurityConfigurerAdapter即可完成。

自定义WebSecurityConfigurerAdapter

@Configuration
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {
    // ①.	用户以及角色的配置
    // 创建admin、root和zhangsan两个用户;
    // admin的角色是:ADMIN 和 USER;root的角色是ADMIN 和 LEAD;
    // zhangsan的角色是:USER
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("admin").password("123456").roles("ADMIN","USER")
                .and()
                .withUser("root").password("123456").roles("ADMIN","LEAD")
                .and()
                .withUser("zhangsan").password("123456").roles("USER");
    }

	// ②.	配置URL的访问权限
	// 如果没有下面的配置,不同角色的访问权限是一样,所以需要进行配置
    @Override
    protected  void configure(HttpSecurity http) throws Exception {
    	// 开启HttpSecurity的配置
        http.authorizeRequests()
        	// admin/** 模式URL必须具备ADMIN角色
            .antMatchers("/admin/**").hasRole("ADMIN")
            // user/** 模式需要ADMIN或USER角色
            .antMatchers("/user/**").access("hasAnyRole('ADMIN','USER')")
            // dba/** 模式需要ADMIN和DBA角色
            .antMatchers("/dba/**").access("hasRole('ADMIN') and hasRole('DBA')")
            // 用户访问其它URL都必须认证通过后访问
            .anyRequest().authenticated()
            // 开启表单登录并配置登录接口
            // formLogin() 方法表示开启表单登录,即登录页面
            // loginProcessingUrl() 方法配置登录接口为"/login"。可以直接调用"/login"接口,
            // 发起一个POST请求进行登录,登录参数中用户名必须为 username,密码必须为 password,
            // 配置 loginProcessingUrl 接口主要是方便 Ajax 或者移动端调用登录接口。
            // permitAll() 表示和登录相关的接口都不需要认证就可以访问。
            .and().formLogin().loginProcessingUrl("/login").permitAll()
            // 关闭csrf
            .and().csrf().disable(); 
    }
}

测试

@RestController
public class MyWebSecurityConfigController {
 
    @GetMapping("/admin/say")
    public String say1() {
        return "HELLO, I'M A ADMIN.";
    }
 
    @GetMapping("/user/say")
    public String say2() {
        return "HELLO, I'M A USER.";
    }
 
    @GetMapping("/dba/say")
    public String say3() {
        return "HELLO, I'M A DBA.";
    }
 
    @GetMapping("/hello")
    public String say4() {
        return "HELLO, WORLD.";
    }
}

①. 使用admin登录,由于该用户具有 ADMIN 和USER 这两个角色,所以登录后可以访问/admin/say 、 /user/say 和 /hello这三个接口;
②. 使用zhangsan登录,由于该用户仅有USER 这两个角色,所以登录后可以访问/user/say 和 /hello这三个接口;

URL用户: admin用户:张三
/admin/say√×
/user/say√√
/dba/say××
/hello√√
SpringSecurity+ oauth2实现同账号多端同时登录 问题复现 项目中使用了app+ pc+ 小程序,当用户同时登录app+pc时 其中一端会被挤下线。 出现原因 我们使用的是redis存储token,由于redis生token算法原因,多端登录返回同一个token,导致另外一端被挤下线,出现文章开头的情况。 下图就是security基于redis生成token的方式 可见:extractKey方法中使用values去生成token,多端登录参数进入values都一样 所以我们只需要重写token生成规则即可。 解决方式:重写token生成规则 阅读详情

相关推荐

spring security4学习(二)spring-boot结合spring security实现http basic Authentication

HTTP Basic Authentication基本认证机制 HTTP为认证提供了一种原生工具。 尽管我们可以在HTTP的认证形式和cookie的基础上运行自己的认证工具,但在很多情况下,HTTP的原生认证功能就可以很好的满足要求 HTTP的质询/响应认证框架 简化的质询/响应认证框架: 分为四步-请求、质询、认证、成功   认证协议与首部 认证协议是在HTTP认证首部中指定的。

西楚小羽的专栏 2786

Spring Security对接多用户表

起因 项目需要对两个用户表进行配置,于是上网看到了这样的代码 @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean @Primary UserDetailsService us1() { return new InMemoryUserDetailsManager(User.builder().username("javaboy").password

qq_43354702的博客 3388

spring boot整合spring security(二)--手机号验证码登陆

手机号验证码登陆概述搭建基础架构认证流程定义token定义过滤器filter接下来是自定义手机号验证码登陆鉴证器provider修改UserDetailService的实现类为生成验证码接口登陆接口测试未登录状态用户名 密码登陆手机号 验证码登陆 概述 spring security默认使用的是用户名密码的登陆,如果想要增加一种登陆方式, 就要仿照源码中用户名密码登陆的方式, 手写一套手机号验证码登陆校验, 话不多说, 开干! 搭建基础架构 搭建项目基础架构工作, 在(一)中已经完成, 这里直接在其基础上

意田天的博客 2万+

使用springsecurity实现两套登录系统

使用springsecurity实现两套登录系统

qq_53524948的博客 2442

SpringBoot--Spring Security(二)

Spring Security 是基于 Spring 的用户认证(Authentication)和用户授权(Authorization)框架,提供了一套 Web应用安全性的完整解决方案。其中核心技术使用了 Servlet 过滤器、IOC 和 AOP 等。

fanderboy的博客 1218

ESP32小车DIY:从零搭建无线遥控智能车(附完整代码与避坑指南)

本文详细介绍了如何从零开始DIY一台基于ESP32的无线遥控智能小车。内容涵盖核心硬件选型、电路设计、低延迟ESP-NOW无线通信协议的配置与实战,以及双电机差速控制算法与PWM调速的实现。文章提供了完整的代码示例和关键的避坑指南,旨在帮助开发者快速构建稳定可靠的智能车平台,并为进一步的功能扩展奠定基础。

gamma的博客 471

Spring security 多端多用户实战、认证鉴权扩展深入

Spring security 多端多用户实战、认证鉴权扩展深入 前言从配置开始搭建从实战场景开始从基础的账号密码开始如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 当你阅读这篇文章的时候,我们假设你已经对Spring security有所了解,并且懂得如何初步使用。 前

Hades_iphone的博客 4134

线性代数笔记【空间曲面】

二次曲面 曲面可以看成是一个动点或一条动曲线按照一定条件或规律运动产生的轨迹 曲面的方程即是该动点的坐标所满足的方程 空间解析几何中,一般会涉及到由曲面写方程和由方程看曲面两种类型问题 曲面与曲面方程 球面方程 球面:空间内与定点的距离等于定长的点的集合 这一定点叫球心,定长叫半径 标准方程 (x−x0)2+(y−y0)2+(z−z0)2=r2(x-x_0)^2+(y-y_0)^2+(z-z_0)^2=r^2(x−x0​)2+(y−y0​)2+(z−z0​)2=r2 球心P0(x0,y0,z0)P_0(

qq_40500005的博客 3246

SpringBoot学习 (二) Spring Boot Security

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34082854的博客 156

MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能

该MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能。输出曲线可直接用于验证设计的合理性(如是否存在过流面积突变或不足)。的不同范围,选择对应的几何模型计算过流面积。通过分段逻辑计算柱塞腔在不同旋转角度(过流面积在特定条件下会被限制(如。),确保结果符合物理实际。条件分支,根据旋转角度。

huanghm88的专栏 584

PCL 法线定向【2025最新版】

几种法线定向方法的PCL代码实现。

点云侠的博客 2806

二、Spring Boot集成Spring Security之实现原理

Spring Security实现原理详解

JavaEE技术进阶之路 1247

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2416

spring boot整合security(二)

前面实现了最基本的登录,但是肯定是不满足需求的,下面,我们自定义配置: 增加配置类 package com.wm.demo.config; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.an...

你一个人,就不想到别处看看? ---- 我怕一转身连你也不见了...... 224

软件设计师---计算机系统

软件设计师---计算机系统

我从不打没有准备的仗! 3万+

【深度学习新浪潮】李飞飞团队VAGEN框架深度解析:让VLM智能体学会“三思而后行“

VAGEN框架的真正价值,不仅在于性能指标的突破,更在于重新定义了VLM智能体的发展方向——人工智能的进步不应只追求"做得对",更要实现"想得清"。李飞飞团队通过强制显式思考、动态表示适配和精细化奖励三大创新,让智能体第一次具备了可解释的世界建模能力。正如人类通过"观察-预测-行动"认识世界,VAGEN为AI注入的这种思考范式,或许正是通往通用人工智能的关键一步。对于开发者而言,开源的VAGEN框架不仅提供了强大的工具,更揭示了一个重要理念:让AI学会思考,比让它学会执行更重要。

专注:太空算力、AI infra、异构调度、大模型成本工程 281

Spring Boot2 总结(二) Spring Security的基本配置

  Spring Boot对Spring Security提供了自动化配置方案,同时这也是在Spring Boot项目中使用Spring Security的优势,因此Spring Security整合进Spring Boot项目中是非常容易的。 一.Spring Security 的基本用法 1.1 创建项目,添加依赖 对应的依赖如下: 1.2 添加一个controller接口 @GetMapping("/hello") public String hello(){ return

489

落地实战!Python构建地方政府公开数据爬虫:政策/数据/规划全维度抓取(附反爬适配+数据清洗)

政务公开数据爬虫的核心不是“技术多先进”,而是“适配政务网站的特性”——慢一点、稳一点、合规一点,比追求抓取速度更重要。多地市爬虫集群:通过配置文件管理不同地市的URL规则,实现全省/全国政务数据抓取;图片表格识别:结合OCR工具(如pytesseract)识别政务网站的图片表格,转换为结构化数据;数据可视化:将抓取的统计数据导入PowerBI/Matplotlib,实现区域发展趋势分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1802

Springboot 集成Spring Security教程 (二)

本文我们继续 Springboot 集成 Security, 在本文中我们将实现自定义登录验证信息 上篇教程 (一): http://www.izuul.com/index.php/2019/04/05/springboot-security1/ 我的博客: http://www.izuul.com 在上篇基础上新建 config 包, 并且新建 SecurityConfig 配置类 一. 在内存...

nabi 3241

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

重学SpringBoot3-集成Spring Security(二)

授权(Authorization)是指控制用户是否有权访问某个资源或执行某个操作的过程。与认证不同,认证是确认用户的身份,而授权是基于用户的身份决定他们能做什么。例如,即使用户已经登录,如果他们没有足够的权限,他们也无法访问系统的某些资源。在 Spring Security 中,授权主要基于角色和权限的概念进行控制。角色(Role):通常用来定义一组权限,比如ADMIN角色可能包含管理用户、查看日志等权限。权限(Authority):具体的操作或资源访问权,比如等。

CoderJia的学习之路 3365

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

spring boot security(二)权限验证

一、搭建一个验证服务 Spring Boot Security 详解 1.几个重要接口实现 User类实现了UserDetails 接口,该接口是实现Spring Security 认证信息的核心接口。其中 getUsername方法为 UserDetails 接口 的方法,这个方法返回 username,也可以是其他的用户信息,例如手机号、邮箱等。getAuthorities() 方法返回的是...

深夜去搬砖 554

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot整合Spring Security(二)

实现自定义表单登录 1.实现自定义UserDetailsService

thisIsDennis的博客 338

springboot日记(二)spring security的配置

spring security是spring全家桶里的权限控制系统,本质上是一堆过滤器组合而成的。 在我的简历项目中权限控制模块就是利用了spring security模块,实行三级权力控制。 因此,springboot中学会怎么样使用权限控制模块是十分便利的。 一、建立项目 为了方便起见,在建立时选中以下几个选项: 这样就直接集成了模板引擎Thymeleaf,数据库引擎...

六六先森的博客 493

SpringBoot -- 集成Spring Security (二)

本文介绍了Spring Security框架在Spring Boot项目中的核心应用。主要内容包括:1)框架功能概述(认证、授权、防护);2)核心配置实现,涉及安全拦截规则、用户认证、密码加密(推荐BCrypt)和登录控制;3)关键代码示例,如WebSecurityConfig配置类、自定义UserDetailsService认证逻辑、基于注解的权限控制(@PreAuthorize);4)数据库集成方案,通过JdbcTemplate查询用户及权限数据;5)前后端交互设计,采用JSP表单提交到Security

你我约定有三的博客 635

SpringBoot项目实战(008)Spring Security(二)JWT

服务改为STATELESS,不再使用session 数据库中Users表增加token,相应代码调整。后期可以改为token存在redis中。 新增一个JwtUtils,封装常用的jwt操作 请求登录时,获得一个新的jwttoken,并存入数据库。 请求API时,使用jwttoken

IT老吴的博客 1163

Spring Boot 学习之路之 Spring Security(二)加入mybatis

Spring Boot 整合 mybatis 用 Security 实现登录认证以及授权

zuixincainiao的博客 687
上一篇: SpringBoot - Spring Security详解(一)
下一篇: SpringBoot - @EnableAutoConfiguration注解使用详解
cloneme01
博客等级 码龄20年 2万+粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

cloneme01

谢谢您的支持与鼓励!

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

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

打赏作者

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

抵扣说明:

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

余额充值