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

 

这一部分的内容,个人觉得很重要。在这部分的学习中,我会尽可能详细地分析每一个知识点。

首先,我们需要开发一个小模块,部门管理模块

1)  设计实体Bean,使用36位的uuid作为实体的标识属性

2)  定义部门管理模块的接口和实现类

3)  Action中实现部门管理模块的功能(部门分页,添加,修改,删除)

生成uuidUUID.randomUUID().toString();

其次,我们还需要开发员工管理模块

1)  设计员工实体BeanimageName属性只存放文件名称,而且名称采用uuid生成,图片保存在images/employee/[username]/目录;实体Bean中定义方法getImagePath()来返回图片地址的全路径

非持久化属性使用@Transient注解来指定

2)  定义员工管理模块的接口和实现类

3)  Action中实现员工管理模块的功能(员工分页,添加,修改,离职状态设置)

解决因外键约束而导致的部门删除失败:在部门模块实现类中重写delete方法

前面,我们完成了部门和员工管理模块,接下来,我们开始权限管理模块的开发

1.  权限的定义:我们这里根据模块和它所属的操作类型来确定权限,比如部门的添加权限由所属模块department和其权限值add两个部分组成

2.  巴巴运动网采用粗细粒度结合的权限设置,粗粒度采用filter来实现,主要对内容路径进行过滤,细粒度主要对页面中每一个按钮定义所属的权限

3.  定义系统权限Bean时,标示属性必须要实现序列化接口;复合组键类必须要重写equals方法和hashCode方法;@Embeddable注解指定SystemPrivilegePK是实体Bean SystemPrivilege的标识属性所属类型,复合组键在定义实体Bean时使用@EmbeddedId来标注

4.  定义SystemInitAction用于系统权限的初始化

5.  为了便于为用户分配权限,这里引入权限组(角色)的概念,用户属于哪个权限组,他就拥有这个权限组下面的所有权限

6.  定义权限组实体Bean时,权限组与权限之间是多对多的关系,这里就需要使用注解定义中间表

@JoinTable(name="group_privilege",

                     joinColumns=@JoinColumn(name="group_id"),

                     inverseJoinColumns={@JoinColumn(name="module", referencedColumnName="module"),

                                                        @JoinColumn(name="privilege",  referencedColumnName="privilege")}

       )

注:name指定中间表的名称,joinColumns指定中间表的外键名,inverseJoinColumns指定中间表中被维护端的列名,referencedColumnName用于指定中间表中被维护端与复合组键中哪一属性相联系

7.完成权限组的分页/添加/修改/删除功能

8.为用户设置权限组

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值