文章内容:SpringSecurity和Shiro的区别和使用作者:游记ApacheShiro是一个强大易用的Java安全框架,可以非常清晰的处理认证、授权、会话管理和密码加密。使用Shiro易于理解的API,您可以快速轻松地获取任何应用程序,从最小的移动应用程序到最大的Web和企业应用程序。执行过程特点易于理解的JavaSecurityAPI;简单的身份认证(登录),支持多种数据源(LDAP、JDBC、Kerberos、ActiveDirectory等);简单的角色授权(权限控制),支持细粒度签名;支持一级缓存,提升应用性能;内置基于POJO的企业会话管理,适用于Web和非Web环境;异构客户端会话访问;非常简单的加密API;与任何框架无关,或者容器被捆绑,可以独立运行。SpringSecuritySpringSecurity主要实现了Authentication(身份验证,解决你是谁?)和AccessControl(访问控制,即你被允许做什么?,也称为Authorization)。SpringSecurity在架构上将身份验证和授权分开,并提供扩展点。它是一个轻量级安全框架,可确保对基于Spring的应用程序的身份验证和授权支持。它与SpringMVC很好地集成,并捆绑了流行的安全算法的实现。执行进程客户端发起请求进入Security过滤器链。去LogoutFilter时,判断是否为注销路径。如果是注销路径,则转到logoutHandler。如果注销成功,则转到logoutSuccessHandler。如果注销失败,使用ExceptionTranslationFilter;如果不是注销路径,则直接进入下一个过滤器。去UsernamePasswordAuthenticationFilter的时候判断是否是登录路径。如果是,则输入登录操作的过滤器。如果登录失败,则进入AuthenticationFailureHandler进行登录失败处理。如果登录成功,则进入AuthenticationSuccessHandler进行登录成功处理。如果不是登录请求,则不进入此过滤器。去FilterSecurityInterceptor的时候会拿到uri,根据uri找到对应的authenticationmanager。身份验证管理器将执行身份验证工作。如果认证成功,则进入Controller层;否则,将进入AccessDeniedHandler鉴权失败处理器进行处理。Shiro能实现的特性,SpringSecurity基本都能实现,依赖Spring体系,但优点是Spring全家桶之子,集成更合适,使用上比Shiro稍微负责一些。两者相比较,Shiro比SpringSecurity更易用,即实现更简单。同时,Shiro对于基本的授权和认证基本够用了。SpringSecurity有更高程度的社区支持。Spring社区的亲儿子在支持和更新维护方面有优势,同时最好与Spring结合使用。Shiro功能强大,但简单灵活。Apache下的项目更靠谱,不绑定任何框架和容器,可以独立运行。在我看来,如果开发的项目是Spring,我觉得还是用SpringSecurity比较合适。它们本身就是一套东西,很流畅,可能有点复杂,但是你可以自己学。如果开发项目比较紧,Shiro可能更适合,好用,够用。SpringSecurity里面有的,Shiro基本都有。网上也有大量的解决方案,针对一些没有的地方。如果项目没有用到Spring,也不用担心,直接上Shiro。同时还要考虑团队成员的技术栈,比较熟悉哪一个,在选型上尽量避免给同行增加不必要的学习成本!感谢大家的点赞转发,小编会继续转发《优极限》的优质文章
