
权限管理SpringBoot+SpringSecurity
文章平均质量分 87
身份认证、权限管理在任何一个系统都是如影随形的,但是对于对于小白要自己学习搭建一个权限管理,还是比较困难的,本课程一步一个脚印带新手由简入繁搭建属于自己的一套权限管理。
悟纤
过着爱谁谁的生活,活出不设限的人生!
展开
-
权限管理SpringBoot+SpringSecurity系列文章 - 导读
课程介绍 Spring Security是一个基于Spring的安全框架,提供了一套Web应用安全性的完整解决方案。一般来说,Web应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。 用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。 用户认证一般要求用户提供用户名和密码,系统通...原创 2020-03-02 09:43:10 · 28017 阅读 · 0 评论 -
国内最全的Spring Boot系列之四
在2020年这一年, 文章没有确定的方向,方方面面都牵涉到一些,非技术的文章,比如:情绪的控制、如何提高专注力、如何自律… ;技术类的文章:字节码系列、JVM系列、缓存系列、限流算法、Mock工具Mockito、工作流引擎Activiti...;再者就是视频课程方面主要涉及到:设计模式、Spring框架、JVM内存模型…(往期视频课程:Spring Boot框架、Spring Security、Sharding-JDBC、分布式事务解决方案大全)原创 2021-02-02 10:41:47 · 14532 阅读 · 0 评论 -
Spring Boot+Spring Security:概述 - 第1篇
前言 在之前介绍过了Shiro之后,有好多粉丝问Spring Security在Spring Boot中怎么集成。这个系列我们就和大家分享下有关这方面的知识。本节大纲一、什么是Spring Security?二、常用安全框架一、什么是Spring Security? Spring Security是基于Spring AOP和Servlet...原创 2020-03-02 10:23:04 · 27165 阅读 · 0 评论 -
Spring Boot+Spring Security:初体验 - 第2篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9需求缘起 在上一篇文章中,我们对于Spring Security有了一个基本的了解,那么重点是在Spring Boot中如何使用Spring Security呢?一、Spring Security初体验 这里我们通过...原创 2020-03-02 10:30:28 · 27372 阅读 · 0 评论 -
Spring Boot+Spring Security:基于内存的认证信息 - 第3篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9需求缘起 上面我们简单体验了下Spring Security,但是现在只能有一个用户信息,我们这里希望可以配置多个账号信息,本节主要讲解下如何在内存中配置认证信息。编码思路 我们要在内存中初始化我们的认证信息的话,那么需...原创 2020-03-02 12:50:59 · 28252 阅读 · 0 评论 -
Spring Boot+Spring Security:基于内存的角色授权 - 第4篇
需求缘起 之前我们基于内存的方式,构建了两个账号admin和user,对于这两个账号在实际项目中会有不同的角色,比如管理员角色和普通用户角色,对于不同的角色,那么允许访问的方法会不一样。编码思路 对于不同角色具有不同方法的权限的问题,主要需要思考几个点:(1)如何给指定的用户指定角色通过AuthenticationManagerBuilder的ro...原创 2020-03-02 13:01:31 · 27767 阅读 · 0 评论 -
Spring Boot+Spring Security:基于内存数据库的身份认证和角色授权 - 第5篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)hsqldb 2.4.1需求缘起 在前面我们使用基于内存的方式体验了下Spring Security,在实际...原创 2020-03-02 13:55:41 · 27705 阅读 · 9 评论 -
Spring Boot+Spring Security:基于MySQL数据库的身份认证和角色授权 - 第6篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 在前面使用的是内存数据库,...原创 2020-03-03 16:54:02 · 28222 阅读 · 2 评论 -
Spring Boot+Spring Security:自定义登录页面和构建主页 - 第7篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 在上一节我们已经能够把用户...原创 2020-03-03 17:15:11 · 27839 阅读 · 0 评论 -
Spring Boot+Spring Security:登出和403处理 - 第8篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 现在在页面当中还无法进行退...原创 2020-03-03 17:36:48 · 27715 阅读 · 2 评论 -
Spring Boot+Spring Security:动态加载角色 - 第9篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 之前的版本的用户角色通过e...原创 2020-03-04 19:11:06 · 27420 阅读 · 6 评论 -
Spring Boot+Spring Security:原理1 - 第10篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 在前面的几节中,已经对Sp...原创 2020-03-04 19:13:32 · 27277 阅读 · 0 评论 -
Spring Boot+Spring Security:自定义Filter - 第11篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 在上一节,我们介绍了Spr...原创 2020-03-05 19:41:39 · 27557 阅读 · 0 评论 -
Spring Boot+Spring Security:页面白名单和获取登录信息 - 第12篇
说明(1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hibernate 5.2.17.Final(6)MySQL Driver 5.1.47(7)MySQL 8.0.12需求缘起 在有些场景下我们要对一些u...原创 2020-03-05 19:45:13 · 27986 阅读 · 0 评论 -
Spring Boot+Spring Security:基于URL动态权限n种方案 - 第13篇
需求缘起 之前的版本的用户的权限需要使用@PreAuthorize硬编码,那么无法动态的进行权限的配置了,本节基于URL实现动态权限配置方案分析。一、权限动态配置方案1.1 扩展access()的SpEL表达式 我们先看下常见的Spring Security的安全表达式:掌握了Spring Security的SpEL表达式,我们就能够不再局限于...原创 2020-03-06 13:22:24 · 29307 阅读 · 0 评论 -
Spring Boot+Spring Security:基于URL动态权限:准备工作 - 第14篇
需求缘起 在上一节说明了几种方案,但是不管是选择哪一种方案,权限持久化相关操作总是少不了的,本节先做下准备工作。一、准备工作1.1 创建实体类Permission创建实体类,用于存储权限的信息:package com.kfit.permission.bean;import java.util.List;import javax.persistence....原创 2020-03-06 13:26:09 · 27682 阅读 · 0 评论 -
Spring Boot+Spring Security:基于URL动态权限:扩展access()的SpEL表达式 - 第15篇
需求缘起 本节通过扩展access()的SpEL表达式实现URL动态权限。编码思路 通过扩展SpEL表达式主要在配置具体的类和实现的方法,如下示例.access("@authService.canAccess(request,authentication)"); 其中authService是一个类,canAccess是其中的方法:...原创 2020-03-07 17:28:29 · 28846 阅读 · 4 评论 -
Spring Boot+Spring Security:基于URL动态权限:自定义AccssDesionManager - 第16篇
需求缘起 在上一篇我们通过扩展access()的SpEL表达式实现了动态权限控制,本节将通过AccessDesionManager进行实现动态权限,代码是基于《基于URL动态权限:准备工作》在往下编码。Spring Security的简单原理Spring Security使用众多的拦截器对url拦截,以此来管理权限,这里主要讲里面核心流程的两个:(1)登陆验证拦...原创 2020-03-09 12:47:03 · 27802 阅读 · 0 评论 -
Spring Boot+Spring Security:基于URL动态权限:自定义Filter - 第17篇
需求缘起 在上一篇我们通过自定义AccessDesionManager实现了动态权限控制,本节将通过自定义Filter进行实现动态权限,理解了上一篇文章的话,对于这篇文章就没有什么难点了。代码基于《基于URL动态权限:准备工作》在往下编码。编码思路 对于URL动态权限配置,主要解决如下几个问题:(1)基于URL的用户权限信息保存在哪里:需要定义一张权限表,...原创 2020-03-12 14:34:28 · 28252 阅读 · 0 评论 -
Spring Boot+Spring Security:标签sec:authorize的使用 - 第18篇
需求缘起 在访问/index页面,user用户不应该能够看到admin page的链接,针对这个问题可以通过sec:authorize标签进行控制。一、标签sec:authorize的使用1.1 引入依赖 在pom.xml文件中添加依赖:<dependency> <groupId>org.th...原创 2020-03-13 11:40:30 · 29015 阅读 · 0 评论 -
Spring Boot+Spring Security:获取用户信息和session并发控制 - 第19篇
一、获取当前用户信息1.1 从页面上显示当前登陆的用户名 <h1>欢迎使用Spring Security! 当前登录账号:<label th:text="${name}"></label>,通过标签设置: <label sec:authentication="name"></label></h1>...原创 2020-03-17 16:46:11 · 27355 阅读 · 0 评论 -
Spring Boot+Spring Security:注解:@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全 - 第20篇
需求缘起 在之前的章节中我们介绍过通过注解的方式进行权限的控制了,这里再详细的讲解下方法级安全的几个注解。一、注解式方法级安全开启 需要在WebSecuirtyConfig添加配置:@Configuration@EnableWebSecurity //启用Spring Security.////会拦截注解了@PreAuthrize注解的...原创 2020-03-19 16:09:41 · 30247 阅读 · 2 评论 -
Spring Boot+Spring Security:使用md5加密 - 第21篇
需求缘起 很多时候,我们自己已经有现成的一套系统在运行了,这时候要接入spring security的话,那么难免会碰到一个问题:就是自己设计的密码加密方式和spring security提供的加密方式不一样,那么怎么办呢?所以这里我们要自定义下的加密方式,这个实现起来也是很简单的,以前很多系统是使用的MD5加密的吧,那么这里使用MD5加密进行讲解下。一、使用MD5加密...原创 2020-03-23 15:17:20 · 27323 阅读 · 0 评论 -
Spring Boot+Spring Security:PasswordEncoder你真的使用明白了嘛 - 第22篇
需求缘起 不知道大家有没有碰到这样的困扰?(1)Spring Security怎么这么坑呐?原来的密码编辑器都给修改了,我需要怎么迁移旧密码编码的应用程序?(2)要是以后出现了更高效的加密算法,那么我怎么升级现在系统的加密算法呐?旧的系统不就登录不了呐? 如果有这样的疑问,那很好,本文就带大家解决这个问题。一、更优雅的方式使用PasswordEncode...原创 2020-03-24 17:27:02 · 30359 阅读 · 0 评论 -
Spring Boot+Spring Security: MD5是加密算法吗?- 第23篇
前言 有网友在公众号留言:准确的说md5是摘要算法不是加密算法 针对这个问题,当时也没有仔细的思考,空下来的时候,对于这个问题整理了下思路。通过本文您将了解到:一、加密算法1.1 加密和解密1.1.1 加密数据加密 的基本过程,就是对原来为 明文 的文件或数据按 某种算法 进行处理,使其成为 不可读 的一段代码,通常称为 “密文”。通过这样的途...原创 2020-03-25 17:33:55 · 27137 阅读 · 0 评论 -
Spring Boot+Spring Security:记住我(Remember-Me): 方案 - 第24篇
需求缘起 对于用户还是比较懒惰的,我们不可能要求要求用户访问网站每次都需要输入用户名和密码,于是就有了Remember-Me的需求了。一、什么是Remember-Me?Remember-Me 是指网站能够在 Session 之间记住登录用户的身份,具体来说就是成功认证一次之后在一定的时间内我可以不用再输入用户名和密码进行登录了,系统会自动登录。二、Remember...原创 2020-03-27 15:32:38 · 28369 阅读 · 1 评论 -
Spring Boot+Spring Security:记住我(Remember-Me): 基于简单加密token的方案 - 第25篇
前言 在上一节我们介绍了Spring Security中”记住我”的两种方案,那么本节就先介绍一下其中的一种:基于简单加密token的方式。一、编码分析当用户选择了记住我成功登录后,Spring Security 将会生成一个 cookie 发送给客户端浏览器。cookie 值由如下方式组成:base64(username+":"+expirationTime+"...原创 2020-03-30 18:55:35 · 28107 阅读 · 0 评论 -
Spring Boot+Spring Security:记住我(Remember-Me): 基于持久化token的方案 - 第26篇
前言 在前一节,我们使用了简单加密token的方式实现了“记住我“,这一节我们使用持久化token的方式进行实现”记住我“。一、编码分析 我们先分析下都需要做什么事情:(1)如何开启持久化token方式:可以使用and().rememberMe()进行开启记住我,然后指定tokenRepository(),即指定了token持久化方式。(2)to...原创 2020-03-31 18:02:36 · 27942 阅读 · 0 评论 -
Spring Boot+Spring Security:设置登录过期时间的正确姿势 - 第27篇
需求缘起有网友在公众号文章下留言:怎么设置登录过期时间,搞了好久找过不少资料就是没看到,楼主指点一下~博主回复:spring boot 2.x的版本的话,设置属性:server.servlet.session.timeout=60;1.x的版本的话,设置属性:server.session.timeout=60;注意时间单位是秒;特别注意的地方:如果设置小于60秒的话,则会默认取1分钟!...原创 2020-04-01 17:20:22 · 31295 阅读 · 1 评论 -
使用Freemarker - 第28篇
需求缘起 有学员在网易云课堂讨论区留言: 针对这个问题,可以分解为两个小问题:(1)如何在当前的代码中集成freemarker?(2)如何在.ftl文件中使用@security标签?一、集成freemarker 集成思路:(1)添加依赖;(2)配置freemarker;(3)编写ftl文件;(4)添加请求映...原创 2020-04-01 17:24:48 · 27140 阅读 · 0 评论 -
Freemarker在ftl中使用@security - 第29篇
前言 在前面一节中,我们集成了freemarker,这一节的主要是在ftl文件中使用@security。一、在ftl中使用@security 思路:(1)添加依赖;(2)加载security.tld文件;(3)security conf添加配置;(4)ftl使用@security;1.1添加依赖 首先在pom.xml...原创 2020-04-01 17:27:49 · 27533 阅读 · 2 评论 -
Spring Boot+Spring Security:动态权限修改Session刷新权限信息-拦截器方案 - 第29篇
需求缘起在程序的执行过程中,有时有这么一种需求,需要动态的更新某些角色的权限或某些人对应的权限,当前在线的用户拥有这个角色或拥有这个权限时,在不退出系统的情况下,需要动态的改变的他所拥有的权限。张三 登录了系统拥有 ROLE_ADMIN,和ROLE_USER 的权限,但是ROLE_ADMIN的权限太强了,不应该给张三,后台管理人员应该可以取消张三的ROLE_ADMIN的权限,那么在张三还在...原创 2020-04-10 15:31:47 · 29509 阅读 · 7 评论 -
Spring Boot+Spring Security:动态权限修改Session刷新权限信息-SessionRegistry方案 - 第30篇
三、SessionRegistry方案3.1 注入SessionRegistry 通过SessionRegistry管理所有的在线用户,在WebSecurityConfig进行注入:@Bean public SessionRegistry sessionRegistry(){ SessionRegistry sessionRegistry=new ...原创 2020-04-10 15:34:36 · 30140 阅读 · 0 评论 -
Spring Boot+Spring Security:动态权限修改Session刷新权限信息-过滤器方案 - 第31篇
四、过滤器方案 过滤器的方案整体和拦截器差不多,就是把拦截器中的代码迁移到过滤器来就可以了。原本这种方案是没有打算讲解的,但是在写Demo的时候,发现有些坑,所以在这里和大家分享一下。4.1 编写Filter 根据之前讲过的,我们编写一个RoleCheckFilter继承GenericFilterBean:public class RoleCheckF...原创 2020-04-10 15:39:00 · 28355 阅读 · 0 评论 -
Spring Boot+Spring Security:前后端分离的架构发展 - 第32篇
一、前后端未分离1.1 开发模式前后端没有区分由程序员一人包干。1.1 开发模式前后端没有区分由程序员一人包干。1.2 渲染模式后端渲染:以jsp,asp, php 为代表的后端直接输出html形式,全部由后端 工程师搞定。1.3 优缺点优点:开发模式简单 缺点:程序员职责过多,需要关注页面的展示,后台业务的逻辑处理二、前后端半分离2.1 开发模式借助于FTL(Template Language),Velocity,Thymeleaf进行模板的..原创 2020-05-22 11:25:03 · 26124 阅读 · 0 评论 -
Spring Boot+Spring Security:前后端分离之JWT介绍- 第33篇
一、跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样。(1)、用户向服务器发送用户名和密码。(2)、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。(3)、服务器向用户返回一个 session_id,写入用户的 Cookie。(4)、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。(5)、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。这种模式的问题在于,扩展性(s原创 2020-05-22 11:27:23 · 26315 阅读 · 0 评论 -
Spring Boot+Spring Security:前后端分离之后端改造分析- 第34篇
前言 使用JWT之后,对于Spring Security有些地方就需要进行调整了,另外对于前端也是需要调整的,因为原本是有状态的,现在变成无状态了,也就不存在cookie和session的交互了,这时候前端的认证就需要进行调整。一、定义JWTLoginFilter 继承UsernamePasswordAuthenticationFilterJWTLoginFilter:登录的过滤器,主要用于获取用户输入的账号密码,封装成UsernamePasswordAuthenticatio...原创 2020-05-22 11:28:06 · 26410 阅读 · 0 评论 -
Spring Boot+Spring Security:前后端分离之后端改造编码- 第35篇
前言 使用JWT之后,对于Spring Security有些地方就需要进行调整了,另外对于前端也是需要调整的,因为原本是有状态的,现在变成无状态了,也就不存在cookie和session的交互了,这时候前端的认证就需要进行调整。一、思路说明 有了前面做的一些基本工作之后,表结构和数据库的操作都是一样的,只需要在一些验证上进行调整即可。(1)JWTLoginFilter:登录的过滤器,主要用于获取用户输入的账号密码,封装成UsernamePasswordAuthe...原创 2020-05-22 11:33:42 · 26119 阅读 · 2 评论 -
Spring Boot+Spring Security:前后端分离之前端jquery.ajax- 第36篇
前言 前面我们改造了后台,这时候,我们发现我们登录直接不能使用了。所以我们需要改造下前端。一、jquery ajax 1.1 改造登录 在登录页面,添加jquery的依赖:<script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.min.js"></script> 在登录按钮添加事件:<button onclick="login()">登录&...原创 2020-05-22 11:40:26 · 26263 阅读 · 0 评论 -
Spring Boot+Spring Security:前后端分离之跨域问题- 第37篇
由于我们端口不一样,就会引起跨域问题,那么怎么解决呢。只要修改下后端就可以了一、跨域解决方案一:使用@CrossOrigin注解在Controller上使用@CrossOrigin注解 @CrossOrigin("http://127.0.0.1:8848") public String login() { return "/login"; }方案二:CORS全局配置-实现WebMvcConfigurerpackage com.kfit.config;.原创 2020-05-22 11:43:05 · 27115 阅读 · 0 评论