一、权限控制预计分为:
1、资源:用户访问的菜单、操作的按钮、链接的url都对应一条资源数据
2、角色:角色包含一组资源,表明拥有该角色的账号允许访问这组资源对应的页面或操作
3、角色组:角色组中包含一组角色,用于自由灵活地生成各种控制策略
4、账号:匹配一个角色组,拥有角色组中资源的访问权限
(以上可以用shiro配置,达到不同权限的用户拥有各自的视图界面)
5、
具体到每个账户对应不同省、市、区等,需要账号设置所属地区、学校,查询时就完成权限划分。
二、资源(Resources)的数据结构
/** 用于左侧菜单的权限控制 **/
public static final String MENU = "menu";
/** 用于跳转页面链接时的权限控制 **/
public static final String BUTTON = "button";
@Id
private String id;
private String name; // 资源名称
private String desc; //资源描述
private String type; //资源类型:meun、button
private String value; //资源值:meun(/manage/account/list)、button(account:*)
private boolean enabled = true;
public static final String BUTTON = "button";
@Id
private String id;
private String name; // 资源名称
private String desc; //资源描述
private String type; //资源类型:meun、button
private String value; //资源值:meun(/manage/account/list)、button(account:*)
private boolean enabled = true;
三、角色(Role)的数据结构
@Id
private String id; private String roleName; // 角色名称
private String roleDesc; // 角色描述
private Set<String> resourceIds; // 角色对应的资源集合
private boolean enabled = true;
四、角色组(RoleGroup)的数据结构
@Id
private String id; private String roleGroupName; // 角色 组 名称
private String roleGroupDesc; // 角色 组 描述
private Set<String> roleIds; // 角色组对应的角色集合
private boolean enabled = true;
private String createTime;
private String modifyTime;
五、账号(Account)的数据结构
/** 超级管理员 **/
public static final String ACCOUNT_TYPE_SUPERADMIN = "super_admin";
/** 教育局管理员 **/
public static final String ACCOUNT_TYPE_EDUADMIN = "edu_admin";
/** 学校管理员 **/
public static final String ACCOUNT_TYPE_SCHADMIN = "sch_admin";
/** 运营管理员 **/
public static final String ACCOUNT_TYPE_SOPADMIN = "sop_admin";
@Id
private String id;
private String userName; //登录用户名
private String showName; //显示用户名
private String password; //密码
private int loginNum = 0; //登录次数
private String adminType; //管理员类型
private boolean isWholeCountry; //是否全国
private Set<String> provinceIds; //省
private Set<String> cityIds; //市
private Set<String> areaIds; //区县
private Set<String> centerSchoolIds; //中心校
private Set<String> schoolIds; //学校
private String modifyUserId; //记录最后一次修改人(逻辑删除,修改基本信息,作用域等有效)
private String modifyUserName; //记录最后一次修改人(逻辑删除,修改基本信息,作用域等有效)
private String loginTime; //登录时间
private String createTime; //创建时间
private String modifyTime; //记录最后一次修改时间(逻辑删除,修改基本信息,作用域等有效)
private boolean enabled = true; //是否可用,逻辑删除用
private int status = 1; //禁用启用状态:0-禁用;1-启用;
public static final String ACCOUNT_TYPE_SUPERADMIN = "super_admin";
/** 教育局管理员 **/
public static final String ACCOUNT_TYPE_EDUADMIN = "edu_admin";
/** 学校管理员 **/
public static final String ACCOUNT_TYPE_SCHADMIN = "sch_admin";
/** 运营管理员 **/
public static final String ACCOUNT_TYPE_SOPADMIN = "sop_admin";
@Id
private String id;
private String userName; //登录用户名
private String showName; //显示用户名
private String password; //密码
private int loginNum = 0; //登录次数
private String adminType; //管理员类型
private boolean isWholeCountry; //是否全国
private Set<String> provinceIds; //省
private Set<String> cityIds; //市
private Set<String> areaIds; //区县
private Set<String> centerSchoolIds; //中心校
private Set<String> schoolIds; //学校
private String modifyUserId; //记录最后一次修改人(逻辑删除,修改基本信息,作用域等有效)
private String modifyUserName; //记录最后一次修改人(逻辑删除,修改基本信息,作用域等有效)
private String loginTime; //登录时间
private String createTime; //创建时间
private String modifyTime; //记录最后一次修改时间(逻辑删除,修改基本信息,作用域等有效)
private boolean enabled = true; //是否可用,逻辑删除用
private int status = 1; //禁用启用状态:0-禁用;1-启用;
/**权限控制**/
private Set<String> roleGroupIds; //账号对应的角色组集合
private Set<String> roleGroupIds; //账号对应的角色组集合