`
fantasy
  • 浏览: 515313 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用AOP做权限控制

    博客分类:
  • Java
AOP 
阅读更多

见附件!

分享到:
评论
29 楼 ben_wu007 2015-12-18  
没数据库设计    而且这样要写代码   还是做成配数据库好 
28 楼 tarena_dingtao 2013-02-26  
[co[size=small][/[align=center][/align]size]lor=red][/color]  
27 楼 fantasy 2011-06-20  
wangyu1221 写道
之前使用filter对请求的url做权限检查,后来换作拦截器,功能大致上一样,但是觉得filter更灵活。

现在的问题是,如果在某一个功能/页面要对不同的用户做权限管理,比如用户A可以浏览该页面全部内容,而用户B只能浏览一部分,这个应该怎么解决?

可以给每一个需要控制部分定义一个权限code,用户具有这个权限code就显示(或禁用)。在用户登录的时候,默认读取用户所具有的权限code(可以是DIV的ID), 那么他无论进入哪个页面,咱们都知道哪些有权限哪些没有。
26 楼 tianzizhi 2011-06-18  

功能权限好处理,上面大部分说的都是功能权限,
业务权限不好抽象处理,差不多都是在具体代码中控制
25 楼 wangyu1221 2011-06-18  
之前使用filter对请求的url做权限检查,后来换作拦截器,功能大致上一样,但是觉得filter更灵活。

现在的问题是,如果在某一个功能/页面要对不同的用户做权限管理,比如用户A可以浏览该页面全部内容,而用户B只能浏览一部分,这个应该怎么解决?
24 楼 phk070832 2011-06-09  
白糖_ 写道
年初做的一个权限拦截大概是这样的:
页面请求-->spring aop-(没有权限抛出异常)->异常拦截器-->错误页面
上面这种方式最大的问题是抛出异常会消耗很大的开支,所以我感觉用拦截器已经足够了:
页面请求-->权限拦截器-(没有权限)->错误页面



哈哈 很像我当初的“实验室产品”的处理方法
23 楼 挪威的幽灵 2011-06-09  
做了个大概的介绍,但是类似于功能点权限和数据权限没有涉及,不够深入吧
22 楼 youjianbo_han_87 2011-06-08  
虽然是植入,感觉还是没有用配置文件这样的方式来配置权限好。
21 楼 sidac 2011-06-08  
我的想法是在Struts2里用拦截器来实现,比如通过对需要权限验证的Action加验证拦截器,具体做法是做个default包的extend包,里面加权限验证拦截器,然后需要权限验证的Actionextend这个包。
对于基于Spring的,也可以通过AOP的方式,对需要验证的Action加特性描述,并通过关键字拦截做相应的处理。
对于一般的Action,还可以用父类继承的方式,在父类的初始化方法里进行验证并设置权限标识,在Action的执行方法里访问权限标识并做相应处理,这个方法对类的侵入性就比较强了。
20 楼 fq_jeid 2011-06-08  
spring security..?
19 楼 soft_xiaohui 2011-06-07  
角色权限:根据用户所拥有的角色,查出用户所拥有的权限。
采用过滤器,拦截用户的请求URL,判断用户是否有该权限使用权利。
数据权限:
  在用户已有权限的基础上,只允许查询某一部分数据。
以上是个人理解。
  怎么做到拥有不同角色的用户在同时拥有某一权限的基础上,查询出不同的数据?
这个问题困扰了我很久,不知现在又没有成熟的做法?
  一个思路就是,在把权限,赋给角色时,指定获取数据的范围。
18 楼 白糖_ 2011-06-07  
年初做的一个权限拦截大概是这样的:
页面请求-->spring aop-(没有权限抛出异常)->异常拦截器-->错误页面
上面这种方式最大的问题是抛出异常会消耗很大的开支,所以我感觉用拦截器已经足够了:
页面请求-->权限拦截器-(没有权限)->错误页面
17 楼 huiseyiyu 2011-06-07  
fantasy 写道
huiseyiyu 写道
我现在的做法是把功能权限和数据权限分两个拦截器处理,菜单权限是一次加载的,通过点击菜单进入功能权限判断该菜单有哪些功能,由于是ext做的界面,所以就不方便用标签了,进入数据权限过滤,判断该用户的角色该菜单下可发以看到哪些数据,多少数据,最后执行action的方法,感觉不爽的是操作几乎都需要进行数据库的交互,而且对应的server方法的hql语句需要开发人员做特殊的处理,目前为了使其通用性,采用的动态hql语句的方式,不知道有没有什么好的方法,小弟借鉴下

关于数据权限,我使用过SQL语句拦截,把拦截的SQL语句作为子查询,然后加where条件。如
select * from (select * from user) where ..

where后面的是可以配置的。



你的sql语句拦截是如何做的,可否详述?
16 楼 huiseyiyu 2011-06-07  
fantasy 写道
huiseyiyu 写道
我现在的做法是把功能权限和数据权限分两个拦截器处理,菜单权限是一次加载的,通过点击菜单进入功能权限判断该菜单有哪些功能,由于是ext做的界面,所以就不方便用标签了,进入数据权限过滤,判断该用户的角色该菜单下可发以看到哪些数据,多少数据,最后执行action的方法,感觉不爽的是操作几乎都需要进行数据库的交互,而且对应的server方法的hql语句需要开发人员做特殊的处理,目前为了使其通用性,采用的动态hql语句的方式,不知道有没有什么好的方法,小弟借鉴下

关于数据权限,我使用过SQL语句拦截,把拦截的SQL语句作为子查询,然后加where条件。如
select * from (select * from user) where ..

where后面的是可以配置的。




我的做法定义一个baseaction,所有的action都继承这个父类,在父类中定义变量,假设有哪些功能List funs;
哪些机构List orgs;然后再拦截中把JoinPoint强转为BaseAction 然后你就可以随意的进行操作了,根据不同情况更改BaseAction中的变量值,同时获取session的方法也可以放在BaseAction中,你在拦截类中可以轻松获取,对于变量的一些值,在拦截器过滤后就塞入了,执行到业务action具体方法时就可以获取使用了,至于如何使用,可以根据大家业务和架构的不同定义,但对于功能在开始的时候就抓取到,当时是我在做上个系统时使用的,感觉权限应用不及时,需要重复登陆才能获取当前权限,而且登陆的时候做权限的内存匹配时间太长,所以想采用后查询的方式,点击菜单的时候在去获取菜单响应的功能
15 楼 nirvana1988 2011-06-07  
还是用拦截器来封装你的权限控制逻辑比较好,这样便于视图的跳转~~
14 楼 cailongyi 2011-06-07  
学习了。。。。。
13 楼 fantasy 2011-06-07  
huiseyiyu 写道
我现在的做法是把功能权限和数据权限分两个拦截器处理,菜单权限是一次加载的,通过点击菜单进入功能权限判断该菜单有哪些功能,由于是ext做的界面,所以就不方便用标签了,进入数据权限过滤,判断该用户的角色该菜单下可发以看到哪些数据,多少数据,最后执行action的方法,感觉不爽的是操作几乎都需要进行数据库的交互,而且对应的server方法的hql语句需要开发人员做特殊的处理,目前为了使其通用性,采用的动态hql语句的方式,不知道有没有什么好的方法,小弟借鉴下

关于数据权限,我使用过SQL语句拦截,把拦截的SQL语句作为子查询,然后加where条件。如
select * from (select * from user) where ..

where后面的是可以配置的。

12 楼 fantasy 2011-06-07  
huiseyiyu 写道
我现在的做法是把功能权限和数据权限分两个拦截器处理,菜单权限是一次加载的,通过点击菜单进入功能权限判断该菜单有哪些功能,由于是ext做的界面,所以就不方便用标签了,进入数据权限过滤,判断该用户的角色该菜单下可发以看到哪些数据,多少数据,最后执行action的方法,感觉不爽的是操作几乎都需要进行数据库的交互,而且对应的server方法的hql语句需要开发人员做特殊的处理,目前为了使其通用性,采用的动态hql语句的方式,不知道有没有什么好的方法,小弟借鉴下

关于菜单权限,我们之前的做法是把有权限的菜单当作权限点全部存入数据库,然后当用户登录的时候,一次性读出用户所有菜单的权限。菜单分为三级,一次菜单,二级菜单,三级按钮(添加,删除,修改等)。

如果用户有这个菜单的权限code,就可以使用这个菜单。至于是隐藏还是禁用,由界面端自行控制。

11 楼 xiaobing 2011-06-07  
这应该是不错的思路
10 楼 jackerxff 2011-06-07  
实际上还是对Action进行拦截  要进行权限判断 还是要借用Session  好在Struts2中HttpSession变成了Map<String,Object>

相关推荐

    使用AOP进行权限控制

    ### 使用AOP进行权限控制:深入解析与实施 #### 背景 在现代软件开发中,权限控制是确保系统安全、数据隐私和合规性的关键环节。然而,在传统的开发模式下,权限控制代码往往散布在应用程序的各个角落,导致代码...

    java spring AOP权限控制

    但是,使用 AOP 实现权限控制也需要亲自从零开始做起,耗费时间不会很短。 总结 Java Spring AOP 权限控制是指在 Java Spring 框架下使用 AOP 技术来实现权限控制。权限控制可以通过传统的应用程序实现和 J2EE ...

    使用SpringAop使用Oracle数据权限控制

    Spring AOP(面向切面编程)是一个强大的工具,常用于实现业务逻辑中的横切关注点,如日志、事务管理以及我们的案例——数据权限控制。本篇将深入探讨如何结合Spring AOP和Oracle数据库来实现精细化的数据权限控制。...

    AOP控制权限编程例子

    **AOP编程与权限控制详解** 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,旨在减少代码的重复性和提高代码的可维护性。AOP允许程序员定义“方面”,这些方面是关注点的模块...

    Spring Boot AOP权限控制模块开发

    在这个"Spring Boot AOP权限控制模块开发"项目中,我们将深入探讨如何利用AOP来构建一个自定义的权限管理模块。 首先,AOP的核心概念是切面(Aspect)、通知(Advice)、连接点(Join Point)、切点(Pointcut)和...

    AOP下的权限控制实现

    【AOP下的权限控制实现】 面向方面的编程(AOP)是一种强大的编程范式,它针对传统面向对象编程(OOP)在处理横切关注点时的局限性进行了优化。横切关注点指的是那些贯穿多个模块的功能,如权限控制、日志记录、...

    自定义注解+AOP实现权限控制.zip

    详情请查看博客:&lt;a href='https://blog.csdn.net/byteArr/article/details/103984725'&gt; springboot+自定义注解+AOP实现权限控制(一)和&lt;a href='https://blog.csdn.net/byteArr/article/details/103992016'&gt; ...

    aop 权限验证demo

    综上所述,"aop 权限验证demo"提供了一个利用Spring AOP进行权限控制的实例,它展示了如何在不修改业务代码的情况下,通过切面来插入权限检查,提高了代码的整洁性和安全性。通过对不同类型的AOP通知的理解和实践,...

    Java之Spring AOP 实现用户权限验证

    在本文中,我们将重点探讨如何使用Spring AOP实现用户权限验证。 首先,权限验证是任何应用程序中不可或缺的一部分,尤其是涉及到用户登录和访问控制的场景。通过Spring AOP,我们可以将权限验证的逻辑与业务代码...

    spring aop 实现权限的简单示例

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们在不修改源代码的情况下对程序的...这个简单的示例展示了如何利用Spring AOP进行权限控制,实际应用中,可以根据具体需求进行更复杂的定制和优化。

    spring aop权限小实例

    本实例将深入探讨如何在Spring AOP中实现权限控制,以提高代码的可读性和可维护性。 首先,我们要理解AOP的基本概念。AOP允许程序员定义“切面”,这些切面封装了特定的关注点,比如权限检查。然后,这些切面可以在...

    基于RBAC和AOP的访问控制研究与应用.caj

    访问控制技术近年来成为研究的热点 而基于角色的访问控制则 是这些热点中的焦点 并且在信息管理系统安全方面显示了极...把对资源的访问权限分配给相应的角色根据用户在组织内所承担 的角色进行访问授权与控制.

    struts1+EJB3整合(AOP控制权限)

    在这个"struts1+EJB3整合(AOP控制权限)"的项目中,我们看到这两个框架是如何协同工作的,以及如何通过AOP(面向切面编程)来实现权限控制,并使用JUnit进行EJB3的单元测试。 首先,让我们深入理解AOP在权限控制中...

    spring security 2.0 的简单配置使用(补)——用aop控制method级权限

    在本文中,我们将深入探讨如何在Spring Security 2.0版本中配置并使用AOP(面向切面编程)来实现方法级别的权限控制。首先,我们需要理解Spring Security的基础概念。 1. **Spring Security基本架构** Spring ...

    aop权限代码

    在“aop权限代码”这个项目中,我们可以看到如何在Spring 2.5版本中使用AOP来实现权限控制。 首先,我们需要理解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或关注点。切面可以包含通知...

    aop权限管理代码

    本资源提供的"aop权限管理代码"正是基于这种思想,用于实现应用程序中的权限控制功能。 权限管理是系统安全的重要组成部分,它确保只有经过授权的用户或角色才能访问特定的资源或执行特定的操作。在AOP的帮助下,...

    aop实现权限校验的过程

    在编程领域,AOP(Aspect-Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志、事务管理、权限控制等。本篇文章将深入探讨如何使用AOP来实现权限...

    Spring AOP 权限

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,用于实现诸如日志记录、性能监控、事务管理以及,如题目所述,权限控制等跨功能关注点。本篇文章将深入探讨如何利用Spring AOP来实现权限管理,以及相关的...

    基于spring_aop_权限管理系统原型

    在基于Spring AOP的权限管理系统原型中,我们探讨的核心是如何利用Spring的面向切面编程(Aspect-Oriented Programming,AOP)特性来实现细粒度的权限控制。AOP允许我们在程序运行时,对特定关注点(如日志、事务...

Global site tag (gtag.js) - Google Analytics