Web端权限控制--java

客户需求,3个权限控制:a,超级管理员;b,分公司管理员;c,负责人(负责人 是分公司 填报业务的人员)

一、思路

    在角色表中填写2个角色(超级管理员和分公司管理员)。在web后台通过获取的角色控制权限。

二、具体方法

1.在service页面定义 两个角色:     

/**
 * 超级管理员
 */
public static final String PROVINCE_MANAGER_ROLE_CODE  = "CJGLY";
/**
 * 分公司管理员
 */
public static final String BRANCH_MANAGER_ROLE_CODE  = "FGSGLY"

定义一个枚举类型:

public static enum PermissionType {

		ProvinceAdmin(0),  BranceAdmin(1), userLiable(2), Other(8);
		private int value;
		private PermissionType(int value) {
			this.value = value;
		}
		public int getValue() {
			return value;
		}
	}

2.实现类(基本权限控制) (超级管理员admin的id 这里设置为 1)

intValue()是java.lang.Number类的方法。有intValue方法,Double,Long等都有此方法。Number是一个抽象类。java中所有的数值类都继承它。其中Integer,Double,Long等都有此方法。此方法的意思是:输出int数据。

每个数值类中具体的实现是不同的。例如: 
Float类和Double类的intValue方法,就是丢掉了小数位,而Long的intValue方法又不一样的。具体的用法你可以参考jdk的源码和API。)
PermissionType basePermissionType = PermissionType.Other;//设置默认权限类型
// 基础权限控制
User currentUser = //当前用户 ;
if (currentUser.getId().intValue() == 1) {//超级管理员
	basePermissionType = PermissionType.ProvinceAdmin;
} else {
	Set<Role> roles = currentUser.getRoles();//当前用户的角色
	Iterator<Role> iterator = roles.iterator();
	while (iterator.hasNext()) {
		Role role = iterator.next();
		if (service.PROVINCE_MANAGER_ROLE_CODE.equals(role.getRoleCode())) {//判断角色code为超级管理员
			basePermissionType = PermissionType.ProvinceAdmin;//权限类型赋值
			break;
		}
		if (service.BRANCH_MANAGER_ROLE_CODE.equals(role.getRoleCode())) {//判断角色code为分公司管理员
			basePermissionType = PermissionType.BranceAdmin;//权限类型赋值
			break;
		}
	}
}
if (basePermissionType == PermissionType.Other
	&& ( //数据的负责人code.equals(currentUser.getCode()))) {
		basePermissionType = PermissionType.userLiable;// 负责人
}

3.根据获取的basePermissionType控制权限角色


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值