传智播客——巴巴运动网权限管理续

我们今天对昨天巴巴运动网权限管理模块做点内容的补充 ① employee.addPrivilegeGroup(new PrivilegeGroup(id));这段代码使用构造方法new了一个新的权限组,然后把它添加到用户属性中去;在很多的框架中都可以进行此操作,因为只需要在中间表建立起用户ID和权限组ID之间的关系就可以了,而不需要权限组别的属性值。 ② 权限拦截:粗粒度的权限拦截在以前的博客中有所提到,这里我就省略了;重点分析一下细粒度的权限拦截:目前常用的方法有两种,我们一一介绍 1) 为权限拦截建立一个blinding(绑定)表,将类,方法,权限值绑定起来保存在数据库表中,系统初始化时加载到计算机内存中,使用AOP技术对具体方法操作进行拦截,判断当前登录用户的权限组里面是否具有该权限,具有的话,执行该操作,否则提示“该用户不具有此操作权限” 2) 采用注解方式(类似于xml,完成配置功能)定义具体方法所具备的权限:首先需要定义一个Annotation(定义模块和权限值),@Retention定义注解的生命周期,@Target定义注解标注位置 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Permission { String module(); String privilege(); } 在Action方法中通过注解@Permission指定执行该方法所需的权限值;新建一个切面类Interceptor,使用环绕通知对切入点定义的方法进行拦截通知 3) Spring的切面类无法对继承DispatchAction中定义的方法进行拦截(因为Spring没有通过代理类而是直接通过反射技术调取目标对方的方法),解决此问题的方法:定义一个请求处理器类PrivilegeRequestProcessor继承DelegatingRequestProcessor类,由此类管理Action,重写其中的processActionPerform方法 4)processActionPerform方法先获取用户当前执行的方法,然后验证用户是否具有执行当前方法的权限,如果有,继续往前执行,如果没有,则返回用户控制页面,并提示用户没有执行该操作的权限 5)可以通过自定义标签来控制不同用户权限可以看到的不同用户操作界面 第二种方式更加便于维护,而且效率也更高,所以,我们这里采用的是第二种方式进行权限的拦截 这部分的内容应用性很强,大家认真掌握,找工作很有益处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值