一、SpringSecurity 框架简介
官网:https://projects.spring.io/sp…
源代码: 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。
期待您的关注
- 博主最近新写了一本书:《手摸手教您学习 SpringBoot 系列 -16 章 97 节》
- 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。