7 _江南一点雨

尚未进行身份认证

我要认证

Java攻城狮

等级
TA的排名 122

一个案例演示 Spring Security 中粒度超细的权限控制!

想要细化权限控制粒度,办法很多。本文接着上文(Spring Security 中如何细化权限粒度?),通过一个具体的案例来向小伙伴们展示基于 Acl 的权限控制。其他的权限控制模型后面也会一一介绍。1.准备工作首先创建一个 Spring Boot 项目,由于我们这里涉及到数据库操作,所以除了 Spring Security 依赖之外,还需要加入数据库驱动以及 MyBatis 依赖。由于没有 acl 相关的 starter,所以需要我们手动添加 acl 依赖,另外 acl 还依赖于 ehcache 缓存

2020-09-17 15:25:24

Spring Security 中如何细化权限粒度?

有小伙伴表示微人事(https://github.com/lenve/vhr)的权限粒度不够细。不过松哥想说的是,技术都是相通的,明白了 vhr 中权限管理的原理,在此基础上就可以去细化权限管理粒度,细化过程和还是用的 vhr 中用的技术,只不过设计层面重新规划而已。当然今天我想说的并不是这个话题,主要是想和大家聊一聊 Spring Security 中权限管理粒度细化的问题。因为这个问题会涉及到不同的权限管理模型,今天和小伙伴们聊一聊~1.权限管理模型要想将细化权限粒度,我们不可避免会涉及到一些权限

2020-09-16 09:27:29

Spring Security 权限管理的投票器与表决机制

今天咱们来聊一聊 Spring Security 中的表决机制与投票器。当用户想访问 Spring Security 中一个受保护的资源时,用户具备一些角色,该资源的访问也需要一些角色,在比对用户具备的角色和资源需要的角色时,就会用到投票器和表决机制。当用户想要访问某一个资源时,投票器根据用户的角色投出赞成或者反对票,表决方式则根据投票器的结果进行表决。在 Spring Security 中,默认提供了三种表决机制,当然,我们也可以不用系统提供的表决机制和投票器,而是完全自己来定义,这也是可以的。本

2020-09-12 11:21:10

Spring Security 中如何让上级拥有下级的所有权限?

答案是能!松哥之前写过类似的文章,但是主要是讲了用法,今天我们来看看原理!本文基于当前 Spring Security 5.3.4 来分析,为什么要强调最新版呢?因为在在 5.0.11 版中,角色继承配置和现在不一样。旧版的方案我们现在不讨论了,直接来看当前最新版是怎么处理的。1.角色继承案例我们先来一个简单的权限案例。创建一个 Spring Boot 项目,添加 Spring Security 依赖,并创建两个测试用户,如下:@Overrideprotected void configure

2020-09-09 17:02:08

什么是计时攻击?Spring Boot 中该如何防御?

松哥最近在研究 Spring Security 源码,发现了很多好玩的代码,抽空写几篇文章和小伙伴们分享一下。很多人吐槽 Spring Security 比 Shiro 重量级,这个重量级不是凭空来的,重量有重量的好处,就是它提供了更为强大的防护功能。比如松哥最近看到的一段代码:protected final UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)

2020-09-02 12:08:21

一个诡异的登录问题

美好周末,从解 BUG 开始!周五本来想早点下班,临了有一个简单的需求突然提上来,心想着整完了就走,没想到一下折腾了 1 个多小时才搞定,愉快的周末就从加班中开启了。回到家里把这件事复盘一下,小伙伴们看看是否能够从中 GET 到一些未知的东西。需求是这样的:项目是 Spring Boot 项目,里边对请求进行了划分,有的请求是 HTTP 协议,有的请求是 HTTPS 协议,项目规定,有一些请求必须是 HTTPS 协议,例如 /https 接口,该接口必须使用 HTTPS 协议访问,如果用户使用了 HT

2020-08-31 10:47:19

为什么你使用的 Spring Security OAuth 过期了?

最近一段时间,大家在用 Spring Security OAuth2 时可能发现有很多类过期了。大家在选择 OAuth2 依赖的时候,可能也会困惑,有好几个地方都可以选:那么到底选择哪一个依赖合适呢?这不同的依赖又有什么区别?今天松哥就来和大家聊一聊 Spring Security 中关于 OAuth2 的恩怨。前言先来大致介绍一下 OAuth2 在 Spring 框架中的发展历程。大约十年前,Spring 引入了一个社区驱动的开源项目 Spring Security OAuth,并将其纳入

2020-08-28 09:44:08

Spring 源码第 8 篇,各种属性的解析

Spring 源码解析第 8 篇,继续。上篇文章我们分析了 bean 标签的解析过程,但是主要是涉及到一些简单的属性,一些冷门属性如 lookup-method 等没有和大家分析,主要是考虑到这些属性大家可能用得少,因此我上周录制了一个简单的视频,先带领小伙伴们复习了一下这些冷门属性的用法:Spring 中四个冷门属性,你可能没用过,挑战看一下!现在关于 bean 节点的配置大家都了解了,我们接下来就来看下完整的解析过程。阅读本系列前面文章,有助于更好的理解本文:Spring 源码解读计划Sp

2020-08-24 09:34:27

Spring 源码解读第七弹!bean 标签的解析

Spring 源码解读继续。本文是 Spring 系列第八篇,如果小伙伴们还没阅读过本系列前面的文章,建议先看看,这有助于更好的理解本文。Spring 源码解读计划Spring 源码第一篇开整!配置文件是怎么加载的?Spring 源码第二弹!XML 文件解析流程Spring 源码第三弹!EntityResolver 是个什么鬼?Spring 源码第四弹!深入理解 BeanDefinition手把手教你搭建 Spring 源码分析环境Spring 源码第六弹!松哥和大家聊聊容器的始祖 Def

2020-08-10 08:56:23

盘点 Spring Security 框架中的八大经典设计模式

上次有小伙伴建议,源码分析太枯燥了,要是能够结合设计模式一起来,这样更有助于大家理解 Spring Security 源码,同时还能复习一波设计模式。因此松哥今天就试着整一篇,和大家来聊一聊 Spring Security 中涉及到的设计模式,不过 Spring Security 中涉及到的设计模式还是非常多的,松哥这里讲几个,剩下的欢迎小伙伴们留言补充。1.模板方法模式Template Pattern(模板方法模式)是一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将

2020-07-30 09:33:32

深入理解 WebSecurityConfigurerAdapter【源码篇】

我们继续来撸 Spring Security 源码,今天来撸一个非常重要的 WebSecurityConfigurerAdapter。我们的自定义都是继承自 WebSecurityConfigurerAdapter 来实现的,但是对于 WebSecurityConfigurerAdapter 内部的工作原理,配置原理,很多小伙伴可能都还不太熟悉,因此我们今天就来捋一捋。我们先来看一张 WebSecurityConfigurerAdapter 的继承关系图:在这层继承关系中,有两个非常重要的类:S

2020-07-29 09:40:17

花式玩 Spring Security ,这样的用户定义方式你可能没见过!

有的时候松哥会和大家分享一些 Spring Security 的冷门用法,不是为了显摆,只是希望大家能够从不同的角度加深对 Spring Security 的理解,这些冷门的用法非常有助于大家理解 Spring Security 的内部工作原理。我本来可以纯粹的去讲源码,讲原理,但是那样太枯燥了,所以我会尽量通过一些小的案例来帮助大家理解源码,这些案例的目的只是为了帮助大家理解 Spring Security 源码,仅此而已!所以请大家不要和我抬杠这些用户定义方式没用!好啦,我今天要给大家表演一个绝活,就

2020-07-27 09:20:07

深入理解 AuthenticationManagerBuilder 【源码篇】

咱们继续来撸 Spring Security 源码。前面和大家分享了 SecurityBuilder 以及它的一个重要实现 HttpSecurity,在 SecurityBuilder 的实现类里边,还有一个重要的分支,那就是 AuthenticationManagerBuilder,AuthenticationManagerBuilder 看名字就知道是用来构建 AuthenticationManager 的,所以今天我们就来看一看 AuthenticationManager 到底是怎么构建的。1.初

2020-07-23 10:14:19

深入理解 HttpSecurity【源码篇】

HttpSecurity 也是 Spring Security 中的重要一环。我们平时所做的大部分 Spring Security 配置也都是基于 HttpSecurity 来配置的。因此我们有必要从源码的角度来理解下 HttpSecurity 到底干了啥?1.抽丝剥茧首先我们来看下 HttpSecurity 的继承关系图:可以看到,HttpSecurity 继承自 AbstractConfiguredSecurityBuilder,同时实现了 SecurityBuilder 和 HttpSecur

2020-07-22 11:48:23

深入理解 SecurityConfigurer 【源码篇】

我们来继续撸 Spring Security 源码。SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。在前面的文章中,松哥曾经多次提到过,Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。所以我们今天有必要来跟大家把 SecurityConfigurer 从头到尾捋一捋。1. SecurityConfi

2020-07-21 09:18:55

深入理解 FilterChainProxy【源码篇】

昨天有小伙伴加松哥微信,说他把松哥的 Spring Security 系列撸完了。。but 松哥这个系列还没发完呢,在我的计划中,Spring Security 系列目前应该能更新一半,还剩一半,虽然有的小伙伴可能觉得好像已经没啥了,其实还有很多东西。。。松哥最近也是特别忙,Security 更新慢下来了,但是秉持前面说的,要学就成系列的学,要学就学透彻,这个系列我还会继续更下去。今天我们就来聊一聊 Spring Security 系列中的 FilterChainProxy。这是一个非常重要的代理

2020-07-20 09:17:49

Spring 源码第六弹!容器的始祖 DefaultListableBeanFactory

Spring 源码继续开整!在 XML 文件解析流程一文中,松哥和大家分享了 Spring 中配置文件的加载方式,如果小伙伴们还没看过,一定先看一下,这有助于更好的理解本文,传送门:Spring 源码第一篇开整!配置文件是怎么加载的?。还记得该篇文章中的代码吗?XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));User user = factory.getBean(User.class);

2020-07-15 08:40:57

Spring Security 可以同时对接多个用户表?

文章目录1.原理1.1 Authentication1.2 AuthenticationManager1.3 ProviderManager1.4 AuthenticationProvider2.案例3.小结这个问题也是来自小伙伴的提问:其实这个问题有好几位小伙伴问过我,但是这个需求比较冷门,我一直没写文章。其实只要看懂了松哥前面的文章,这个需求是可以做出来的。因为一个核心点就是 ProviderManager,搞懂了这个,其他的就很容易了。今天松哥花一点时间,来和大家分析一下这个问题的核心,同时

2020-07-14 08:35:01

Spring Security 竟然可以同时存在多个过滤器链?

这是来自一个小伙伴的提问,我觉得很有必要和大家聊一聊这个问题:首先这个问题本身是有点问题的,因为 http.authorizeRequests() 并非总是第一个,虽然大部分情况下,我们看到的是第一个,但是也有很多情况 http.authorizeRequests() 不是首先出现。要搞明白这个问题,我们就要搞清楚 http.authorizeRequests() 到底是啥意思!这就涉及到 Spring Security 中过滤器链的配置问题了,本文松哥就来和大家稍微聊一聊。本文是 Spring S

2020-07-10 09:11:33

Spring 源码第四弹!深入理解 BeanDefinition

聚沙成塔!不知不觉 Spring 源码已经更到第五篇啦~看源码之前,要先会用功能,这是最基本的,因为在源码讲解中,默认大家已经熟知 Spring 基本用法了,如果还不熟悉 Spring 的基本用法,可以看一下松哥发布在 B 站上的免费入门视频:https://www.bilibili.com/video/BV1Wv41167TU。上篇文章和小伙伴们介绍了 Spring 源码中的 EntityResolver,这个是用来解决 XML 文件校验问题的。接下来本来应该接着第二弹的 XML 文件解析流程继续往

2020-07-07 07:17:12

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。