SpringSecurity框架简介及与shiro特点对比

 更新时间:2022年03月17日 14:44:57   作者:字母哥博客  
这篇文章是SpringSecurity框架的入门篇,主要为大家介绍了SpringSecurity框架简介及与shiro优缺点对比有需要的朋友可以借鉴参考下,希望能够有所帮助

前言

本专栏内容目前已经比较系统了,核心内容也相对完整,本系列文章会根据Spring Security社区的发展逐步的更新内容。请大家多多关注脚本之家~

一、 SpringSecurity 框架简介

官网:https://spring.io/projects/spring-security

Spring Security 是强大的,且容易定制的,基于Spring开发的实现认证登录与资源授权的应用安全框架。

SpringSecurity 的核心功能:

  • Authentication:身份认证,用户登陆的验证(解决你是谁的问题)
  • Authorization:访问授权,授权系统资源的访问权限(解决你能干什么的问题)
  • 安全防护,防止跨站请求,session 攻击等

二、比较一下shiro与Spring Security

目前在java web应用安全框架中,与Spring Security形成直接竞争的就是shiro,二者在核心功能上几乎差不多,但从使用的角度各有优缺点。笔者认为:没有最好的,只有最合适的。

2.1.用户量

Shiro的使用量一直高于spring security。但是从趋势上来看(2020年10月的百度指数),Spring Security是在一直上升的,shiro的使用量同比、环比都进入了下滑期。

2.2.使用的方便程度

通常来说,shiro入门更加容易,使用起来也非常简单,这也是造成shiro的使用量一直高于Spring Security的主要原因。但是从笔者的角度来看,二者其实都简单,我说说我的理由:

  • 在没有Spring Boot之前,Spring Security的大部分配置要通过XML实现,配置还是还是非常复杂的。但是有了 Spring Boot之后,这一情况已经得到显著改善。
  • Spring Security之所以看上去比shiro更复杂,其实是因为它引入了一些不常用的概念与规则。大家应该都知道2/8法则,这在Spring Security里面体现的特别明显,如果你只学Spring Security最重要的那20%,这20%的复杂度和shiro基本是一致的。也就是说,不重要的那80%,恰恰是Spring Security比shiro的“复杂度”。

也就是说,如果有人能帮你把Spring Security最重要的那20%摘出来,二者的入门门槛、复杂度其实是差不太多的。

2.3.社区支持

Spring Security依托于Spring庞大的社区支持,这点自不必多说。shiro属于apache社区,因为它的广泛使用,文档也非常的全面。二者从社区支持来看,几乎不相上下。

但是从社区发展的角度看,Spring Security明显更占优势,随着Spring Cloud、Spring Boot、Spring Social的长足进步,这种优势会越来越大。因为Spring Security毕竟是Spring的亲儿子,Spring Security未来在于Spring系列框架集成的时候一定会有更好的融合性,前瞻性、兼容性!这也是为什么我们要学Spring Security的主要原因!

2.4.功能丰富性

Spring Security因为它的复杂,所以从功能的丰富性的角度更胜一筹。其中比较典型的如:

  • Spring Security默认含有对OAuth2.0的支持,与Spring Social一起使用完成社交媒体登录也比较方便。shiro在这方面只能靠自己写代码实现。
  • 还有一种普遍说法:Spring Security在网络安全的方面下的功夫更多,但是笔者并未有非常直接的感受,有可能出现安全问题的时候才会感到不够安全的痛。

三、总结

如果你只是想实现一个简单的web应用,shiro更加的轻量级,学习成本也更低。如果您正在开发一个分布式的、微服务的、或者与Spring Cloud系列框架深度集成的项目,笔者还是建议您使用Spring Security。

以上就是SpringSecurity框架简介及与shiro特点对比的详细内容,更多关于SpringSecurity与shiro框架对比的资料请关注脚本之家其它相关文章!

相关文章

  • vscode 前端最佳配置小结

    vscode 前端最佳配置小结

    这篇文章主要介绍了vscode 前端最佳配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • git分支的创建、切换、合并及删除操作小结

    git分支的创建、切换、合并及删除操作小结

    这篇文章给大家详细的介绍了关于git分支的操作,其中包括查看现存分支、创建分支、切换分支、提交分支、分支合并以及删除分支,文中给出了详细示例代码,相信对大家的学习和理解很有帮助,有需要的朋友们下面来一起学习学习吧。
    2016-11-11
  • IDEA中使用Git拉取代码时报 Git pull failed原因及解决方法

    IDEA中使用Git拉取代码时报 Git pull failed原因及解决方法

    这篇文章主要介绍了IDEA中使用Git拉取代码时报 Git pull failed原因及解决方法,本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • IDEA编写SQL语句没有提示的解决办法

    IDEA编写SQL语句没有提示的解决办法

    这篇文章主要给大家介绍了关于IDEA编写SQL语句没有提示的解决办法,在IDEA中如果你在编写SQL语句时没有得到语法提示,可能是因为没有正确配置数据库连接或者缺少相应的插件,需要的朋友可以参考下
    2023-08-08
  • 使用MASA Blazor开发查询表格页

    使用MASA Blazor开发查询表格页

    MASA Blazor 是一个基于 Material Design 设计语言的 Blazor 组件库,dotNET开发者只需或者甚至不需要懂得 javascript 就能开发一个企业级中后台系统,这篇文章主要介绍了使用MASA Blazor开发一个标准的查询表格页,需要的朋友可以参考下
    2022-04-04
  • Jenkins使用publish html report插件展示HTML报告的方法

    Jenkins使用publish html report插件展示HTML报告的方法

    这篇文章主要介绍了Jenkins使用publish html report插件展示HTML报告的方法,展示普通的html如何展示在jenkins上,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • HTML5 拖拽复制功能的实现

    HTML5 拖拽复制功能的实现

    这篇文章主要介绍了HTML5 拖拽复制功能的实现的相关资料,需要的朋友可以参考下
    2016-09-09
  • git stash(储藏)的用法总结

    git stash(储藏)的用法总结

    本文详细讲解了git stash(储藏)的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • VSCode中画UML图的方法实现

    VSCode中画UML图的方法实现

    这篇文章主要介绍了VSCode中画UML图的方法实现,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 算法系列15天速成 第三天 七大经典排序【下】

    算法系列15天速成 第三天 七大经典排序【下】

    今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序
    2013-11-11

最新评论