乐趣区

关于springsecurity:SpringSecurity能否吊打Shiro

文章内容:SpringSecurity 和 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 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 这一套,用 Spring Security 我感觉更适合一些,他们自身就是一套货色,顺畅,可能稍微简单一些,然而学会了就是本人的。如果开发我的项目比拟缓和,Shiro 可能更适合,容易上手,也足够用,Spring Security 中有的,Shiro 也根本都有,没有的局部网上也有少量的解决方案。

如果我的项目没有应用 Spring 这一套,不必思考,间接 Shiro。

同时要思考团队成员的技术栈,更加相熟应用哪个,在选型上,也要尽量避免给同行减少不必要的学习老本!

感激大家的点赞与转发,小编会继续转发《 优极限 》优质文章

退出移动版