Spring Security 学习笔记
Spring security 学习笔记
南淮北安
好好学习
展开
-
(珍藏版)学习 Spring Security 看这一篇博客就够了 !!!
文章目录一、学习目录二、扩展目录一、学习目录Spring Security 介绍Spring Security 快速入门Spring Security 使用数据库认证JSR-250 学习服务器端方法级权限控制(JSP-250,@Secured,支持表达式的注解)一文学会对页面端标签的权限控制(authentication,authorize,accesscontrollist)二、扩展目录一文学会 Spring Security 中的密码加密(bCryptPasswordEncode原创 2020-06-13 14:19:40 · 1213 阅读 · 0 评论 -
一篇文章带你使用 JSON 格式数据完成 SpringSecurity 登录
在使用 SpringSecurity 中,大伙都知道默认的登录数据是通过 key/value 的形式来传递的,默认情况下不支持 JSON 格式的登录数据,如果有这种需求,就需要自己来解决。文章目录一、基本的登录方案二、使用 JSON 登录一、基本的登录方案在说如何使用 JSON 登录之前,我们还是先来看看基本的登录吧,本文为了简单,SpringSecurity 在使用中就不连接数据库了,直接在内存中配置用户名和密码,具体操作步骤如下:(1)创建 Spring Boot 工程首先创建 SpringB转载 2020-10-02 21:53:48 · 1986 阅读 · 0 评论 -
一篇文章带你搞定 SpringBoot 整合 Shiro
文章目录一、Shiro 和 SpringSecurity 比较二、原生的整合1. 环境搭建2. 创建 Realm3. 配置 ShiroConfig4. 配置 Controller三、使用 Shiro Starter 实现1. 环境搭建2. 配置 ShiroConfig3. 配置 Shiro 信息一、Shiro 和 SpringSecurity 比较在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。一般来转载 2020-10-02 16:49:45 · 2367 阅读 · 11 评论 -
一篇文章带你搞定 SpringSecurity 和 OAuth2 的结合使用
前面我们已经学习了 OAuth 具体的知识:OAuth 学习 ,所以本篇文章我们具体学下 OAuth2 和 SpringSecurity 的结合使用本篇主要针对的是前后端分离,也就是 Oauth 中的密码式登录文章目录一、前期准备二、Config1. 首先定义授权服务器2. 资源服务器3. SecurityConfig三、测试1. 定义 Controller一、前期准备添加依赖:添加 oauth2 依赖和 redis 依赖,由于 oauth2 依赖是在 security 基础上添加的,所以需要先原创 2020-10-02 11:17:50 · 3232 阅读 · 0 评论 -
一篇文章带你解决 SpringSecurity 出现: “Error creating bean with name ‘springSecurityFilterChain‘”
我出现这个问题的 SpringBoot 版本是 2.3.4,java 版本是 11文章目录一、问题描述二、问题解决一、问题描述对于springsecurity 的其他配置没出现什么问题,将其和 Oauth2 结合使用时,出现:错误信息:org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘springSecurityFilterChain’ defined in class原创 2020-10-02 10:59:27 · 8644 阅读 · 2 评论 -
一篇文章带你搞定 SpringSecurity 中的动态权限配置
文章目录一、前期准备1. 数据库脚本2. 创建 SpringBoot 项目加入依赖二、定义 Service1. UserService2. MenuService三、定义 Mapper1. 定义 UserMapper 和 UserMapper.xml2. 定义 MenuMapper 和 MenuMapper.xml三、定义 Config1. MyFilter2. MyAccessDecisionManager3. SecurityConfig四、定义 Controller一、前期准备1. 数据库脚本U原创 2020-09-28 15:32:16 · 1354 阅读 · 0 评论 -
一篇文章带你搞定 Spring Security 中角色的继承问题(版本前后设置不一致)
角色继承实际上是一个很常见的需求,因为大部分公司治理可能都是金字塔形的,上司可能具备下属的部分甚至所有权限,这一现实场景,反映到我们的代码中,就是角色继承了。Spring Security 中为开发者提供了相关的角色继承解决方案,但是这一解决方案在最近的 Spring Security 版本变迁中,使用方法有所变化。SpringSecurity 在角色继承上有两种不同的写法,在 Spring Boot2.0.8(对应 Spring Security 也是 5.0.11)上面是一种写法,从 Spring转载 2020-09-27 15:37:19 · 918 阅读 · 1 评论 -
一篇文章带你搞定 springsecurity 基于数据库的认证(springsecurity 整合 mybatis)
文章目录一、前期配置1. 加入依赖2. 数据库脚本二、定义实体类1. 定义 User2. 定义 Role三、定义 Service四、定义 Mapper1. UserMapper2. UserMapper.xml五、定义 SecurityConfig一、前期配置1. 加入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-sprin原创 2020-09-27 11:16:34 · 3103 阅读 · 7 评论 -
一篇文章带你搞定 SpringSecurity 配置多个HttpSecurity 和实现对于方法安全的控制
文章目录一、实现配置多个 HttpSecurity二、实现方法安全的控制1. 编写配置类2. 编写 service3. 编写 controller4. 测试一、实现配置多个 HttpSecurity前期的配置和学习基本和本系列的文章都一样,本篇文章不再赘述:学习 Spring Security 看这一篇博客就够了@Configurationpublic class MultiHttpSecurityConfig { @Bean PasswordEncoder passwordEn原创 2020-09-26 21:18:16 · 3971 阅读 · 2 评论 -
一篇文章带你入门 SpringSecurity实现密码加密和解码
文章目录一、加密和解密1. 为什么要加密2. 加密方案3. PasswordEncoder二、前期准备二、用户配置1. 配置文件2. 配置类一、加密和解密1. 为什么要加密2011 年 12 月 21 日,有人在网络上公开了一个包含 600 万个 CSDN 用户资料的数据库,数据全部为明文储存,包含用户名、密码以及注册邮箱。事件发生后 CSDN 在微博、官方网站等渠道发出了声明,解释说此数据库系 2009 年备份所用,因不明原因泄露,已经向警方报案,后又在官网发出了公开道歉信。在接下来的十多天里,金山转载 2020-09-26 11:06:50 · 10342 阅读 · 1 评论 -
一篇文章带你认识 SpringSecurity
文章目录一、SpringSecurity 介绍二、核心功能三、SpringSecurity 作用一、SpringSecurity 介绍Java 领域老牌的权限管理框架当属 Shiro 了。Shiro 有着众多的优点,例如轻量、简单、易于集成等。当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spring Boot 面前无法充分展示自己的优势等等,特别是随着现在 Spring Boot 和 Spring Cloud 的流行,Spring Security 正在走向舞台舞台中央。Spr转载 2020-09-26 10:07:26 · 855 阅读 · 0 评论 -
一篇文章带你实现 SpringSecurity 和 Mybatis 完成登录操作
最后的登录操作,存在问题,具体可以参考第六部分,也欢迎大佬指出问题所在文章目录一、前期配置1. 添加依赖2. 配置数据库中的实体类3. 配置 application.properties 实现数据库连接二、配置 UserDao 和 UserDao.xml1. UserDao.java2. UserDao.xml三、配置 service四、配置 SecurityConfig五、其他配置六、存在问题一、前期配置1. 添加依赖数据库参考:一篇文章带你搞定 SpringSecurity 和 SpringD原创 2020-09-25 17:29:15 · 2139 阅读 · 9 评论 -
一篇文章带你使用 SpringBoot 实现自动登录时的安全风险控制
已经学习了: SpringBoot 配合 SpringSecurity 实现自动登录功能知道了 Spring Boot 自动登录存在的一些安全风险,在实际应用中,我们肯定要把这些安全风险降到最低,今天就来和大家聊一聊如何降低安全风险的问题。(1)持久化令牌方案(2)二次校验文章目录一、持久化令牌1. 原理2. 代码演示3. 测试4. 源码分析二、二次校验一、持久化令牌1. 原理要理解持久化令牌,一定要先搞明白自动登录的基本玩法: SpringBoot 配合 SpringSecurity 实转载 2020-09-24 09:58:16 · 2478 阅读 · 3 评论 -
一篇文章带你搞定 SpringBoot 配合 SpringSecurity 实现自动登录功能
自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱:很多网站我们在登录的时候都会看到类似的选项,毕竟总让用户输入用户名密码是一件很麻烦的事。自动登录功能就是,用户在登录成功后,在某一段时间内,如果用户关闭了浏览器并重新打开,或者服务器重启了,都不需要用户重新登录了,用户依然可以直接访问接口数据作为一个常见的功能,我们的 Spring Security 肯定也提供了相应的支持,本文我们就来看下 Spring Security 中如何实现这个功能。文章目录一、加入 remember转载 2020-09-16 22:06:10 · 2064 阅读 · 2 评论 -
一篇文章带你搞定 SpringSecurity 和 SpringDataJpa 的整合
关于 SpringDataJpa 的学习可以参考:学习 Spring Data JPA 一篇文章就够了文章目录一、创建工程二、准备模型三、配置四、测试一、创建工程注意,除了 Spring Security 依赖之外,我们还需要数据依赖和 Spring Data Jpa 依赖。工程创建完成后,我们再在数据库中创建一个空的库,就叫做 jpa,里边什么都不用做,这样我们的准备工作就算完成了。二、准备模型(1)角色实体类:@Entity(name = "t_role")public class R转载 2020-09-15 20:52:34 · 962 阅读 · 0 评论 -
一篇文章带你搞定 Spring Security 将用户数据存储到数据库
文章目录一、UserDetailService二、JdbcUserDetailsManager三、数据库支持四、测试登录一、UserDetailServiceSpring Security 支持多种不同的数据源,这些不同的数据源最终都将被封装成 UserDetailsService 的实例,在微人事(https://github.com/lenve/vhr)项目中,我们是自己来创建一个类实现 UserDetailsService 接口,除了自己封装,我们也可以使用系统默认提供的 UserDetailsS转载 2020-09-15 17:05:02 · 4074 阅读 · 3 评论 -
一篇文章带你搞定 Spring Security 中的授权操作
文章目录一、授权二、准备测试用户三、准备测试接口四、配置五、启动测试六、角色继承一、授权所谓的授权,就是用户如果要访问某一个资源,我们要去检查用户是否具备这样的权限,如果具备就允许访问,如果不具备,则不允许访问二、准备测试用户因为我们现在还没有连接数据库,所以测试用户还是基于内存来配置。基于内存配置测试用户,我们有两种方式,第一种就是我们本系列前面几篇文章用的配置方式,如下:@Override protected void configure(AuthenticationManagerB转载 2020-09-15 14:57:13 · 1289 阅读 · 4 评论 -
一篇文章带你使用 Spring Security 完成前后端分离,使用 JSON 进行交互
文章目录一、无状态登录1. 什么是有状态2. 什么是无状态3. 如何实现无状态4. 各自优缺点二、登录交互1, 前后端分离的数据交互2. 登录成功3. 登录擦除三、未认证处理方案四、注销登录五、代码一、无状态登录1. 什么是有状态有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 Tomcat 中的 Session。例如登录:用户登录后,我们把用户的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 sessi转载 2020-09-14 20:11:37 · 7018 阅读 · 2 评论 -
一篇文章带你搞定 Spring Security 的登录流程
为什么想和大家捋一捋 Spring Security 登录流程呢?这是因为之前小伙伴们的一个提问:如何在 Spring Security 中动态修改用户信息?如果你搞清楚了 Spring Security 登录流程,这其实不是问题。先来大致描述一下问题场景:你在服务端的安全管理使用了 Spring Security,用户登录成功之后,Spring Security 帮你把用户信息保存在 Session 里,但是具体保存在哪里,要是不深究你可能就不知道, 这带来了一个问题,如果用户在前端操作修改了当前转载 2020-09-14 19:51:47 · 3989 阅读 · 2 评论 -
一篇文章带你搞定 Spring Security 定制表单登录
文章目录一、登录接口二、登录参数三、登录回调1. 登录成功回调2. 登录失败回调四、注销登录一、登录接口登录页面就是你看到的浏览器展示出来的页面,像下面这个:登录接口则是提交登录数据的地方,就是登录页面里边的 form 表单的 action 属性对应的值。在 Spring Security 中,如果我们不做任何配置,默认的登录页面和登录接口的地址都是 /login,也就是说,默认会存在如下两个请求:GET http://localhost:8080/loginPOST http://loca转载 2020-09-14 19:00:34 · 1147 阅读 · 1 评论 -
一篇文章带你搞定 SpringSecurity 结合Jwt 实现无状态登录
在前后端分离的项目中,登录策略也有不少,不过 JWT 算是目前比较流行的一种解决方案了,本文就和大家来分享一下如何将 Spring Security 和 JWT 结合在一起使用,进而实现前后端分离时的登录解决方案。文章目录一、无状态登录1. 什么是有状态 ?2. 什么是无状态 ?3. 如何实现无状态 ?二、JWT1. JWT 简介2. JWT 数据格式3. JWT 交互流程4. JWT 存在的问题三、实战 SpringBoot 整合 JWT一、无状态登录1. 什么是有状态 ?有状态服务,即服务端需要转载 2020-09-14 16:51:20 · 1268 阅读 · 4 评论 -
一篇文章带你解决 SpringBoot+SpringSecurity 不拦截静态资源
待解决这里还存在问题,如果有看到的大神,可以留言一起学习正常不拦截资源,我查阅资料,基本都是重新 config 方法即可:package org.yolo.securitylogin.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.con原创 2020-09-12 20:32:28 · 5342 阅读 · 5 评论 -
一文学会对页面端标签的权限控制(authentication,authorize,accesscontrollist)
在jsp页面中我们可以也可以使用spring security提供的权限标签来进行权限控制文章目录一、前期准备二、使用案例一、前期准备(1)pom.xml 导入依赖<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>version</原创 2020-06-12 22:51:45 · 611 阅读 · 0 评论 -
学习服务器端方法级权限控制一文就够了(JSP-250,@Secured,支持表达式的注解)
在服务器端我们可以通过 Spring security 提供的注解对方法来进行权限控制。Spring Security在方法的权限控制上支持三种类型的注解:JSR-250注解、@Secured注解和支持表达式的注解,这三种注解默认都是没有启用的,需要单独通过global-method-security元素的对应属性进行启用本文主要介绍 JSR-250 注解文章目录一、前期配置二、使用示例一、前期配置(1)pom.xml 导入相关依赖<dependency> &原创 2020-06-12 17:58:22 · 500 阅读 · 0 评论 -
Spring Security 珍藏版快速入门
文章目录一、前期配置二、Spring Security 测试三、案例:自定义页面(XML配置用户信息)三、案例:自定义页面(数据库存储用户信息)一、前期配置(1)pom.xml <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${s原创 2020-06-11 18:15:10 · 482 阅读 · 0 评论 -
一篇博客帮你搞定 Spring Security 使用数据库认证
文章目录一、前期准备二、Spring Security 使用流程分析一、前期准备(1)pom.xml <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version>原创 2020-06-11 18:14:33 · 422 阅读 · 0 评论 -
一文学会 Spring Security 中的密码加密(bCryptPasswordEncoder)
BCryptPasswordEncoder 对象主要用于对用户的密码进行加密处理文章目录一、加密演示二、实例演示用户密码加密一、加密演示import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;public class BCryptPasswordEncoderUtils { //实例化对象 private static BCryptPasswordEncoder bCryptPasswordEn原创 2020-06-11 18:09:40 · 3105 阅读 · 1 评论 -
Spring Security 介绍
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。(https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的原创 2020-06-10 17:18:57 · 619 阅读 · 0 评论