起步
表设计
开发用户-角色-权限管理系统,首先我们需要知道用户-角色-权限
管理系统的表结构设计。
在用户-角色-权限
管理系统找那个一般会涉及5张表,分别为:
- 1.
sys_users
用户表 - 2.
sys_roles
角色表 - 3.
sys_permissions
权限表(或资源表) - 4.
sys_users_roles
用户-角色关联表 - 5.
sys_roles_permissions
角色-权限关联表(或角色-资源关联表)
详细的建表信息如下
sys_users
解释
用户表中至少包含以上的字段,主键id、用户名username、密码password、盐值salt(因为密码是经过Shiro加密的,需要通过盐值校验,由Shiro生成,不需要用户手动填写)、角色列表roleId(这个字段不是必须的,仅实现在展示用户信息的时候能同时展示用户当前角色)、是否锁定locked(决定当前账户是否是锁定的)。
创建新的用户,仅需要输入用户名和密码即可,盐值由Shiro生成,角色列表和是否锁定都可以在后期管理。
其中是否锁定字段类型为tinyint(1)
,设置这种类型,数据库中实际存储的是int类型数据,一般是0和1,在使用Mybatis取这个字段的数据时,Mybatis会自动将tinyint(1)
字段值为0的转换成false,将字段值为1以上的转换为true。
sys_roles
解释
角色表中role角色名称一般为存储着类似user:create
这种格式,Shiro在Realm中校验用户身份的时候会通过role
这个字段值进行校验;description
是此角色的描述信息,比如用户创建
。
其中pid
表示父节点,就是说,当前的角色可能有上级节点,比如老师
,这个角色可能就有父节点计科教师
,如果存在父节点,这个字段值就是父级节点的ID,根据这个ID,在展示数据的时候就很方便的展示出其在哪个父节点下。available
表示当前节点是否锁定,同样是tinyint(1)
类型,如果为false就说明没有锁定。
sys_users_roles