读书人

巴巴运动网权限模块的设立

发布时间: 2012-07-27 11:03:00 作者: rapoo

巴巴运动网权限模块的设置

本文参考传智播客巴巴运动网视频。


??? 1)部门模块
??? ??? 1)设计实体/数据库表(领域建模/数据库建模)
??? ??? 2)设计业务bean(DAO层)
??? ??? ??? 有些项目有Service层和DAO层,这样主要是为了解决有多个数据库来源。
??? ??? ??? 一般的项目有service层就够了,不然70%的代码都是重复的。
??? ??? ??? 不管有没有DAO层,事物一定要在业务层打开。
??? ??? 3)完成相应业务的action/jsp
??? 2)员工模块
??? ??? a)员工的分页列表
??? ??? b)员工的添加【ajax校验用户名是否存在】/离职设置/改
??? 3)权限定义与权限组模块
??? ??? 1>对系统的所有功能定义相应的权限。
??? ??? 2>由网管针对不同部门不同员工分配权限组,在分配权限组时,可以选择该组具有的权限
??? ??? 3>把权限组分配给某个员工,这个员工就会具备该组下的所有权限。
??? 4)权限拦截模块 A粗粒度(Filter)??? B细粒度(AOP)
???
细粒度的权限设置有两种方案:
1:创建一个permission表(这种方案改起来比较麻烦,而且在应用初始化的时候必须加载表中的数据)
class??????? method??????????? [module privilegeValue]
2:JDK5的注解(这种方案要求必须使用JDK1.5以上的版本)
注解的作用实际上等价于xml,起到了一个配置的作用。

项目用的是Struts1和Spring2,这时遇到了问题:
继承Action的类中的方法能被拦截到,而继承DispatchAction的类中的方法不能被拦截到
原因:Spring的bug/动态代理技术的问题
Spring不能对通过反射技术调用的方法应用上通知(advice)
如果没有实现接口的话,Spring使用cglib为action生成一个代理对象,
cglib是通过继承目标类,并非重写所有非finanl的方法来实现
Spring只会为在本类定义的方法应用通知,但是继承DispatchAction的类的execut方法用的是父类的方法。
他调用的是目标对象的方法,而不是代理对象的方法。

我们可以自己写一个Permission的Annotation来实现。

读书人网 >软件架构设计

热点推荐