一、思路设计整合
我们之前已经为大家展示了一下shiro授权数据在Realm中的简单实现,那这时我们就要将shiro的授权数据持久化至数据库中去,因为我们将来一个系统一定是有很多用户,并且也是拥有很多角色的,我们的授权数据不可能总是在Realm中写,所以这时,我们就要将授权数据持久化进数据库中去。接下来就简单分析一下思路。
首先,我们要实现从数据库中获取权限信息,那么第一件事就是要设计表结构,我们有这样几种设计思路:
第一种模式: 用户 ----------> 角色 ----------> 权限 ---------> 资源url
第二种模式:用户 -----------> 角色
第三种模式:用户 -----------> 权限
这里我们就以第一种模式来实现权限控制,首先是权限控制的思维导图:
这里我们的思路就是,一个用户可以拥有多个角色,那反过来一个角色也可以被多个用户拥有,同样的一个角色可以有多个权限,那一个权限也会被多个角色持有,也就是说用户和角色之间的关系是多对多的,角色和权限也是多对多的,为了将来我们从数据库取用户的权限(也就是说要将多对多处理为两个一对多),我们还需要两张用户和角色之间的中间关系表,也需要角色和权限字符串之间的角色权限表。所以说其实在权限的数据库表设计方面,我们一定是要站在多个角度来设计数据库表的。
二、数据库表设计
1.表设计
那么我们就开始设计表了,首先是角色表:
表名:t_role
id,角色名称
接着是权限表:
表名:t_perms
id,权限名称
然后再来创建用户与角色的中间表:
表名:t_user_role
再之后是角色权限的中间表:
表名:t_role_perms
五张表总览: