Spring Security ,Apache Shiro的对比及数据级权限实现

如题。

 

  以前搞过一阵子的Spring security,现在看来,这个东西除了能和Spring更好的整合外,其它的没有什么太明显的优点。

 现在的SpringSecurity显得太笨重了。 一大堆的Filter层层过滤,一个简单的请求,最少得经过它的8Filter左右,让人很不爽。以及一大堆配置,虽然提供了简化配置,但是哪有完全符合自己需求的东西,最后还是得自己慢慢研究文档和源码。另外,学习曲线也不低。

 最后,它的那个ACL方案纯粹是摆设(数据过滤在查询后、提供另外的几个表来维护权限数据,当数据量很大时,不太现实),我相信很少人会把它的那个方案应用到生产环境中。实际上运用Spring MVC的拦截器就能轻松的实现它绝大部分的功能。

  InfoQ上看到一篇文章介绍了 Apache-shiro

http://www.infoq.com/cn/articles/apache-shiro

 

看上去感觉还不错,至少比Spring Security强(连Spring的官方都不用Spring Security,而用的Shiro),但是不知道如何才能实现数据级权限.有人说细粒度权限是和业务整合在一起的,无法实现通用。既然都提炼出了细粒度和权限这两个词,说明还是有共通的地方,目前国内关于Shiro的资料还很少,有了解的指导一下Shiro的学习及细粒度权限实现

 

  之前已经有人发过权限探讨的帖子了,感觉最后也没有讨论出什么结果,这个东西基本上在每个应用中都会出现的。再次发帖

### Spring SecurityShiro的功能差异 Spring SecurityApache Shiro作为主流的Java安全框架,其功能存在显著差异。Spring Security专注于Web应用的安全性,提供了强大的细粒度访问控制机制以及对多种攻击形式的有效防护措施[^1]。相比之下,Shiro不仅适用于Web场景,还能够很好地支持非Web环境下的安全性需求[^2]。 #### 功能对比 - **使用场景** Spring Security主要面向Web应用程序开发,而Shiro则更加灵活,可以用于任何形式的应用程序(包括但不限于桌面端服务端)。因此,在需要构建跨平台或非标准网络协议的服务时,Shiro可能是更优的选择。 - **配置复杂度** Spring Security以其全面性高度定制化著称,但也带来了较高的学习曲线技术门槛。对于初学者而言,它的配置过程可能会显得繁琐且难以理解[^3]。与此同时,Shiro的设计理念强调简单直观的操作体验,使得开发者能够在较短时间内完成基本设置并投入使用。 - **防止攻击能力** 在抵御潜在威胁方面,两款产品也表现出不同特点。例如,当涉及到CSRF保护等功能模块时,只有Spring Security内置了相应解决方案;而对于输入数据合法性的初步筛查工作,则由各自采用的方法决定——其中Shiro仅仅关注URL路径部分是否存在非法字符组合情况(如分号、反斜杠及超出ASCII范围之外的内容),而不涉及其他组成部分(HDRs/Params etc.) 的检测环节。 ### 性能对比 关于两者的运行效率问题并没有绝对结论因为这往往依赖具体实现细节以及实际应用场景等因素共同作用的结果。然而一般情况下由于Spring Security内部结构相对庞大并且集成了众多额外特性所以理论上讲它或许会消耗更多资源从而影响整体表现水平特别是在高并发请求条件下这种差距可能变得更加明显一些但是考虑到现代硬件设施的进步程度通常不会成为瓶颈所在除非特别极端状况下才会显现出来 。另一方面尽管如此轻量级架构设计思路让SHIRO具备一定速度上的优势尤其是在那些只需要基础认证授权操作而无需太多高级特性的场合里体现得尤为突出 。 ```java // 示例代码展示两种框架初始化方式区别 // Spring Security Configuration Example @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated(); } } // Apache Shiro Configuration Example @Bean public Realm myRealm() { return new MyCustomRealm(); // 自定义领域逻辑 } ``` ### 使用场景分析 最终选择哪一种工具应该基于以下几个方面的考量: - 如果当前项目已经大量采用了Spring生态体系组件,并且未来规划当中也会继续沿用下去的话那么毫无疑问优先考虑选用Spring Security因为它天然就拥有良好的兼容性无缝衔接的优势; - 对于小型独立微服务或者是某些特殊用途的小型工具类软件来说如果只是单纯为了满足简单的登录退出管理加上角色判断之类的基础需求而已此时引入整个庞大的SS库显然有些浪费于是乎这时候就可以转而投向更为简洁明快风格代表作之一即为Apahce SHIRO啦! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值