`

shiro 权限认证 VS 过滤器(拦截器)认证

 
阅读更多

 

shiro 的权限池在realm的 doGetAuthorization方法里,从DB里查出当前用户的权限字符串SET,放入shiro的info里。

过滤器的权限池在 session里面,登录完之后,会把当前用户的权限集合放入session里(SESSION方案)。

 

最后使用这个权限池的时候----

 

shiro是在诸如@RequiresPermissions,<shiro:hasPermission>,subject.isPermitted(),等等地方调用的时候,会根据传入的参数去权限池里匹配。从而会带来大量注解,要编程去写入各种权限参数,工作量还是可观的。

过滤器呢,在其拦截方法里,拦截到URL,再对其根据权限池进行匹配。也没有什么额外的工作量了,都统一处理。此种方案好处,还可以在拦截器里根据URL进行日志处理(URL肯定是唯一的,可以据此key得到操作名,时间、用户、操作名都有了,状态可以在过滤器的targetMethod返回的JSON获得,这样一个日志记录就产生了)。

 

我个人认为,拦截器方案可能在权限认证方面,更加方便。但是并不能说shiro不好,shiro提供了一系列权限功能,比如remberme,session管理等等,这些你用拦截器是没法做的。

 

同样,日志处理也可以用类似于注解AOP方式来处理,也可以通过过滤器来做,同样,个人还是觉得拦截器可能更方便,注解也需要很多额外的工作量(至少每个方法上都要写注解吧,因为方法名无法唯一,所以不能像URL那样做key得到操作名,也就需要写死操作名了。那么多方法呢....工作量也很可观)

(但是拦截器做日志有个注意点,需要维护URL和操作名的关系,可以在菜单表里维护按钮。这样当然更合理,菜单表本来最好就应该有按钮的信息)

 -----如果想维护按钮的权限,可以这样:权限赋予页面里只有菜单、菜单下面查询按钮、菜单下面窗口里面的按钮B(弹出窗口的按钮A不需要了)。在requiresPermissions时候,可以在A返回页面controller方法上面,用 ,  集合窗口里面所有的权限字符串,表示只有拥有所有窗口里面子按钮权限才能弹出窗口。这样日志也是精确到CURD(不是什么弹出窗口也记录),按钮也不太乱。注意,一般在窗口里都是AJAX请求,这个时候权限不够的话 不应该是返回JSP了,应该是JSON,要重写下shiro的相关基类。

 

----如果不想维护按钮权限,又想记录按钮日志,在权限赋予页面只需要不显示出按钮即可。

 

---日志最重要的信息,操作名称可以这么做:往上递归出父节点的menuName,再拼上自己的menuName,再把他放入map,key就是url了,(也可以是权限字符串,就需要对按钮进行权限维护了),再把此map放入cache里(因为一般URL不会变,menuName也不会变;而且URL还挺多的,数据量较大。最适合用缓存了)。

 

总结,拦截器做日志,比较依赖数据库,如果不想维护按钮权限,还得在显示菜单过滤按钮。AOP做日志,不那么依赖,而且生命周期内元数据不会变,更适合缓存。反正各有利弊吧,说到底,拦截器,AOP其实都一样,都是PROXY。

0
1
分享到:
评论

相关推荐

    shiro 权限认证以及授权demo

    Shiro提供了一套过滤器(如`authc`,`roles`,`perms`等),可以在Web应用中拦截请求,执行相应的安全逻辑。在`web.xml`或Shiro配置中,你可以定义过滤器链,指定哪些URL需要经过哪些过滤器处理。 **6. 实战Demo** ...

    基于Shiro 拦截URL,实现权限控制

    1. **配置Shiro**:在Spring或者其他的配置文件中,你需要声明并配置Shiro的相关过滤器,如`authc`(用于身份验证)、`perms`(基于权限的拦截)和`roles`(基于角色的拦截)。 2. **定义角色和权限**:在提供的`...

    spring boot整合shiro实现url请求过滤

    本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能

    ims_cloud_gateway+shiro完成认证权限、日志等-Euraka版.rar

    整合shiro+redis为网关进行认证权限拦截,过滤器统一异常捕获 ; 两种网关底层实现不同,各有取舍,zuul可以作为一个web,实现功能起来更简单,后期也能和sentinel结合做限流熔断;而gateway则更注重性能,WebFlux ...

    shiro权限案例demo

    在"shiro权限案例demo"中,你可能还会发现一些辅助类,比如过滤器(Filter),它们用于拦截HTTP请求并执行权限检查。例如,`shiro-filter.xml`配置文件中定义了哪些URL需要进行权限校验,以及相应的处理方式。 总结...

    Shiro中进行角色与权限认证流程示例代码.zip

    最后,Shiro 还提供了过滤器链配置,可以在 web.xml 或 Spring 配置文件中定义,以便在请求到达控制器之前进行拦截和认证授权检查: ```xml &lt;filter-name&gt;shiroFilter &lt;filter-class&gt;org.apache.shiro.web....

    shiro权限框架

    ### Shiro权限框架详解 #### 一、权限概述与核心概念 在现代软件系统中,权限控制是一项重要的安全措施,它确保只有经过适当验证和授权的用户才能访问特定资源或执行特定操作。权限控制通常包括两个核心方面:认证...

    jfinal整合shiro权限控制(从数据库读取配置信息)

    该过滤器可能负责拦截请求,执行Shiro的认证和授权逻辑,判断用户是否有访问当前资源的权限。如果用户未登录或者没有足够的权限,JfinalShiroFilter可能会重定向到登录页面或者返回错误信息。 3. **ShiroDbRealm....

    Springboot+shiro权限管理

    3. **过滤器配置**:Shiro通过Filter进行权限控制,我们需要在Spring Boot的Web配置中定义Shiro Filter,并设置对应的拦截路径和跳转策略。 4. **安全控制**:Shiro 提供了如 `@RequiresAuthentication`, `@...

    shiro 权限与角色

    `ShiroFilter`是关键的过滤器,它可以拦截请求并进行身份认证和授权检查。在Web应用的配置中,我们需要定义ShiroFilter并设置其拦截规则。 **七、动态权限** Shiro还支持动态权限,这意味着在运行时可以根据业务...

    springboot-shiro权限管理系统.zip

    总的来说,"springboot-shiro权限管理系统"是一个集成了SpringBoot、Shiro和Bootstrap的高效解决方案,它为开发者提供了便捷的身份认证、权限控制和日志管理功能,是构建企业级Web应用的理想选择。通过理解和掌握这...

    shiro权限管理类项目框架

    - **配置**:通常,Shiro 的配置包含在 Spring 配置文件或者单独的 Shiro 配置文件中,定义 Realm 实例、安全拦截器规则等。 - **控制器**:Shiro 可以与 MVC 框架(如 Spring MVC)结合,通过注解或者过滤器来实现...

    Apache shiro权限控制基础配置代码

    在实际项目中,你可以结合Spring Boot、Spring MVC等框架,通过注解或拦截器实现权限控制。例如,使用`@RequiresPermissions`或`@RequiresRoles`注解限制访问特定方法。 总结,Apache Shiro是一个强大且易用的安全...

    shiro权限(1)

    4. **实现过滤器**:使用Shiro的过滤器来拦截请求并进行权限检查。 5. **集成Web应用**:在Web应用中使用Shiro提供的API进行认证和授权操作。 #### 四、总结 通过对Shiro权限管理的学习,我们不仅了解了其基本原理...

    shiro权限框架示例

    在shirodemo中,可能会有配置Web过滤器(Filter)来拦截请求,进行权限校验。 7. **测试与调试** 示例中通常会包含单元测试或集成测试,用于验证Shiro的配置和逻辑是否正确。开发者可以学习如何编写测试用例来确保...

    Shiro认证授权的基本实现

    例如,你可以在 Spring Boot 中添加一个过滤器链配置: ```java @Configuration public class ShiroConfig { @Bean public FilterRegistrationBean shiroFilterRegistrationBean(SecurityManager ...

    Shiro权限框架深入浅出.pdf

    Shiro的Web集成指的是将Shiro框架集成到Web应用中,可以使用过滤器(Filter)来拦截请求,执行认证、授权等操作。在Spring或Spring Boot环境中整合Shiro,需要将Shiro的配置注入到Spring的上下文中,使得Shiro可以和...

    ssm-shiro权限管理(一)

    4. **配置SpringMVC**:在SpringMVC的配置中,添加Shiro的拦截器,设置URL过滤规则,对特定的请求进行权限校验。 5. **编写业务逻辑**:设计并实现用户登录、注销、权限分配等业务逻辑。可以通过Shiro的API来实现...

    管理系统系列--SpringBoot+Shiro权限管理系统脚手架.zip

    通过配置Shiro的过滤器链,可以实现对不同资源的权限拦截,确保只有具备相应权限的用户才能访问特定的页面或接口。 在实际应用中,权限管理通常涉及到以下几个关键部分: 1. **用户认证**:用户登录时,Shiro会对...

    shiro权限框架Demo

    在Demo中,可能会配置一系列的Shiro Filter,如`authc`(认证过滤器)、`roles`(角色过滤器)、`perms`(权限过滤器)等,这些过滤器会根据配置决定用户能否访问某个URL。 5. **配置**:在Demo中,Shiro的配置通常...

Global site tag (gtag.js) - Google Analytics