来源 | https://blog.csdn.net/weixin_38405253/article/details/115301113

要知道Shiro和Spring Security该如何选择,首先要看看两者的区别和对比

Shiro

Apache Shiro是一个强大且易用的Java安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

执行流程

特点

  1. 易于理解的 Java Security API;

  2. 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);

  3. 对角色的简单的签权(访问控制),支持细粒度的签权;

  4. 支持一级缓存,以提升应用程序的性能;

  5. 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;

  6. 异构客户端会话访问;

  7. 非常简单的加密 API;

  8. 不跟任何的框架或者容器捆绑,可以独立运行。

如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-cloud-learning/

Spring Security

Spring Security 主要实现了Authentication(认证,解决who are you? ) 和 Access Control(访问控制,也就是what are you allowed to do?,也称为Authorization)。

Spring Security在架构上将认证与授权分离,并提供了扩展点。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。它与Spring MVC有很好地集成 ,并配备了流行的安全算法实现捆绑在一起。

执行流程

  1. 客户端发起一个请求,进入 Security 过滤器链。

  2. 当到 LogoutFilter 的时候判断是否是登出路径,如果是登出路径则到 logoutHandler ,如果登出成功则到 logoutSuccessHandler 登出成功处理,如果登出失败则由 ExceptionTranslationFilter ;如果不是登出路径则直接进入下一个过滤器。

  3. 当到 UsernamePasswordAuthenticationFilter 的时候判断是否为登录路径,如果是,则进入该过滤器进行登录操作,如果登录失败则到 AuthenticationFailureHandler 登录失败处理器处理,如果登录成功则到 AuthenticationSuccessHandler 登录成功处理器处理,如果不是登录请求则不进入该过滤器。

  4. 当到 FilterSecurityInterceptor 的时候会拿到 uri ,根据 uri 去找对应的鉴权管理器,鉴权管理器做鉴权工作,鉴权成功则到 Controller 层否则到 AccessDeniedHandler 鉴权失败处理器处理。

特点

shiro能实现的,Spring Security 基本都能实现,依赖于Spring体系,但是好处是Spring全家桶的亲儿子,集成上更加契合,在使用上,比shiro略负责。

两者对比

Shiro比Spring Security更容易使用,也就是实现上简单一些,同时基本的授权认证Shiro也基本够用

Spring Security社区支持度更高,Spring社区的亲儿子,支持力度和更新维护上有优势,同时和Spring这一套的结合较好。

Shiro 功能强大、且 简单、灵活。是Apache 下的项目比较可靠,且不跟任何的框架或者容器绑定,可以独立运行。

另外,如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-cloud-learning/

我的看法

如果开发的项目是Spring这一套,用Spring Security我觉得更合适一些,他们本身就是一套东西,顺畅,可能略微复杂一些,但是学会了就是自己的。如果开发项目比较紧张,Shiro可能更合适,容易上手,也足够用,Spring Security中有的,Shiro也基本都有,没有的部分网上也有大批的解决方案。

如果项目没有使用Spring这一套,不用考虑,直接Shiro。

同时要考虑团队成员的技术栈,更加熟悉使用哪个,在选型上,也要尽量避免给同行增加不必要的学习成本!

往期推荐

Spring Boot 2.6之后,动态权限控制终于可以用起来了!

Spring Boot + EasyExcel 导入导出,好用到爆,可以扔掉 POI 了!

Spring Boot 2.6 正式发布:循环依赖默认禁止、增加SameSite属性...

Spring OAuth2 授权服务器配置详解

使用 @Transactional 时常犯的N种错误

技术交流群

最近有很多人问,有没有读者交流群,想知道怎么加入。加入方式很简单,有兴趣的同学,只需要点击下方卡片,回复“加群“,即可免费加入我们的高质量技术交流群!

点击阅读原文,送你免费Spring Boot教程!

Spring Security 和 Shiro 该如何选择?相关推荐

  1. 在 SpringBoot 项目中,Spring Security 和 Shiro 该如何选择?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 要知道Shiro和Sprin ...

  2. 【200期】面试官问:Spring Security 和 Shiro 该如何选择?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  3. 比较一下 Spring Security 和 Shiro 各自的优缺点

    比较一下 Spring Security 和 Shiro ? 一.安全框架 安全框架,简单说是对访问权限进行控制,应用的安全性包括用户认证(Authentication)和用户授权(Authoriza ...

  4. Spring Security and Shiro

    Spring Security  看了第一篇的一部分,后几个还没看: http://www.cnblogs.com/javay/p/5822879.html http://blog.csdn.net/ ...

  5. 其实我不仅会 Spring Security,Shiro 也略懂一二!

    和大家分享一个松哥原创的 Shiro 教程吧,还没写完,先整一部分,剩下的敬请期待. 1.Shiro简介 Apache Shiro是一个开源安全框架,提供身份验证.授权.密码学和会话管理.Shiro框 ...

  6. 【开发技术】2万字分析shiro、spring security两大安全框架,spring session,OAuth2 入门级教程

    SpringBoot 内容管理 Shiro 创建demo 用户[用户包括token ,角色,权限] :fist_oncoming: Shiro配置 配置5个基本对象 + 3额外对象 路径匹配有先后 : ...

  7. Shiro和Spring Security对比

    原文地址:Shiro和Spring Security对比_shiro和springsecurity对比_liyuejin的博客-CSDN博客 一.Shiro简介 Apache Shiro是Java的一 ...

  8. 基于 Spring Security OAuth2和 JWT 构建保护微服务系统

    我们希望自己的微服务能够在用户登录之后才可以访问,而单独给每个微服务单独做用户权限模块就显得很弱了,从复用角度来说是需要重构的,从功能角度来说,也是欠缺的.尤其是前后端完全分离之后,我们的用户信息不一 ...

  9. SpringSecurity系列(一) 初识 Spring Security

    1. 写在前面 Java 领域老牌的权限管理框架当属 Shiro 了,Shiro 有着众多的优点,例如:轻量.简单.易于集成等.当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spri ...

最新文章

  1. ​每日一皮:​入职新公司第一周的感受...
  2. 全球地区资料json 含中英文 经纬度_[喵咪软件推荐(1)]全球国家信息库
  3. 扑克牌比大小c语言,算了算学了有一个月c语言了,写了个扑克牌程序
  4. Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件
  5. 设计模式四:策略模式
  6. Cloudera CDP 企业数据云测试开通指导
  7. HTML结构:自我简介页面
  8. 四个措施打造安全的DevOps流程
  9. 使用 Python爬虫+OpenCV 通过摄像头 二维码识别 来得到官方接口的反馈数据 从而实现实时准确地 检测健康码状态(获取JS动态数据)
  10. 【深度学习实验报告】实验 1:PyTorch 使用简介
  11. 模式先行浅析分销系统的优势
  12. destoon平台供应或者商城详情页直接链接到会员的商铺上
  13. Error:..\FreeRTOS\queue.c,1088
  14. Python:tkinter简易广告牌
  15. 回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出
  16. 《零基础入门学习Python》第031讲:永久存储:腌制一缸美味的泡菜
  17. 一些关于TIA博图软件使用规范
  18. 数据压缩作业2.1 多媒体文件分析——TGA文件
  19. arcgis runtime sdk java部署和踩到的坑
  20. FreeBSD的make

热门文章

  1. SNMP之管理信息库
  2. win7 将文件的背景色改为绿色
  3. linux socket 错误 Transport endpoint is not connected 在 recv shutdown 中的触发时机
  4. python2 转 python3 代码
  5. Makefile常用模板(静态链接库、动态链接库、可执行文件)
  6. 关于VS中区分debug与release,32位与64位编译的宏定义
  7. VC非ASCII语言复制到剪切板乱码问题
  8. NMHDR 与 NM_LISTVIEW,NM_TREEVIEW 的关系
  9. Linux2.6--Linus电梯
  10. ArrayList和LinkedList的各项操作性能比较