一、 SpringSecurity 框架简介

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

源代码: https://github.com/spring-projects/spring-security/

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

SpringSecurity 的核心功能:

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

二、比较一下shiro与Spring Security

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

2.1 用户量

从使用情况上看,二者都在逐步提高使用量。shiro的使用量一直高于spring security.

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。

期待您的关注

最新文章

  1. 记录rewrite url我之前不知道的地方
  2. BigDecimal用法详解
  3. NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds
  4. 【转】常用聚类算法(一) DBSCAN算法
  5. 利用PHPMailer 来完成PHP的邮件发送 #转载自:大菜鸟在云端#
  6. 启动Eclipse弹出:Failed to load JavaHL Library 错误框的解决办法
  7. Best Time to Buy and Sell Stock
  8. Nagios Apache报Internal Server Error错误的解决方法
  9. Sql sp_executesql 参数问题
  10. linux c最简单的加密程序
  11. Codeforces 161D Distance in Tree
  12. 教你如何理解SQL
  13. bzoj千题计划108:bzoj1018: [SHOI2008]堵塞的交通traffic
  14. Spark学习之数据读取与保存总结(一)
  15. redis 系列27 Cluster高可用 (2)
  16. 微信小程序(四) 模板的使用
  17. pinpoint与zipkin的比较
  18. solr6.4.2之webservice兼容升级
  19. oracle 如何查看当前用户的表空间名称
  20. xtrabackup安装使用及原理

热门文章

  1. Mr. Rito Post Office
  2. JVM之内存结构详解
  3. ASP.NET Core API总结(一)
  4. PHP array_unique
  5. HTML 元素居中的方法
  6. JedisCluster与keys/scan查找
  7. Ubuntu 安装mysql & 自定义数据存储目录
  8. python学习-列表、元组和字典(三)
  9. 四jmeter脚本开发
  10. Yii2.0教程应用结构篇 —— 入口脚本