角色管理
原型图
增删改查
不需要校验
角色和权限之间的关系
粗粒度划分
新增/编辑角色
角色名称
权限(复选) 行政管理 后续服务 在线学习 纳税服务 我的空间
状态(单选) 有效 无效
行政管理,不想写死,怎么解决这个问题
定义常量MAP
cn.itcast.core.constant
Constant.java
//系统权限集合
public static String PRIVLEGE_XZGL=“xzgl”;
public static String PRIVLEGE_HQFW=“hqfw”;
public static String PRIVLEGE_ZXXX=“zxxx”;
public static String PRIVLEGE_NSFW=“nsfw”;
public static String PRIVLEGE_SPACE=“spaces”;
public static Map<String,String> PRIVILEGE_MAP;
static{
PRIVILEGE_MAP=new HahsMap<String,String>();
PRIVILEGE_MAP.put(PRIVLEGE_XZGL,”行政管理”);
……………….
}
定义到子系统的权限
写实体及映射文件,这不是个单模块的,一个角色可以有多个权限
管理员:在线学习 纳税服务 我的空间
一般用户:我的空间
我的空间可以被鹳狸猿和一般用户使用
角色与权限的关系:多对多
一个角色可有多个权限,一个权限可以被多个角色使用
角色表:role
角色ID 角色管理 状态
1 管理员 1
2 一般用户 1
角色权限表:role_privilege
角色ID,权限code,
1 nsfw
1 space
2 space
权限表:privilege
权限code 权限名称
nsfw 纳税服务
space 我的空间
role.entity
Role implements Serializable
private String roleId
private String name;
private String state;
private Set<RolePrivilege> rolePrivileges;
//角色状态值
public static String ROLE_STATE_VALID=“1”;
public static String ROLE_STATE_INVALID=“0”;
get+set
双构造
映射文件
Role.hbm.xml
class name table
id name roleId
column name=role_id 32 uuid.hex
name String name 20 nut-null
state String state 1 nut-null
<set name=“rolePrivileges” inverse=“true” lazy=“true”>
<key>
<column name=“role_id”>
</key>
<one-to-many class=“rolePrivilege”/>
</set>
RolePrivilege implements Serializable
private RolePrivilegeId id;
//联合主键类1.必需要实现Serializable借口 2.重写hashCode equals方法
RolePrivilegeId implemengs Serializable
private Role code;
private String roleId;
get set 构造方法 hashcode
set get 双构造
RolePrivilegeId.hbm.xml
class name table role_privilege
<composite-id name=“id” class=“”>
<key-many-to-one name=“role” lazy=“false” class=“”>
<column name=“role_id”>
</>
<key-property name=“code”type=“java.lang.String”>
<column name=“code”length=“20”>
</>
</>