📄 permissionmanager.java
字号:
package com.briup.util;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
/**
* 本类是实现权限控制的类
*
* @author Administrator
*
*/
public class PermissionManager {
private String SERVICES_INTERFACE = "com.briup.service.IService";
private static PermissionManager pm = null;
// 所有的控制方法,key:方法名,value:权限值
private static final Map<String, Long> ALL_METHOD_PERMISSION = new Hashtable<String, Long>();
// 所有的控制方法的中文名称,key:中文方法名,value:权限值
private static final Map ALL_METHOD_PERMISSION_ZH = new TreeMap();
private PermissionManager() {
init();
}
/**
* 初始化
*
*/
private void init() {
try {
Properties props = getProperties();
String TSERVICES_INTERFACE = props
.getProperty("SERVICES_INTERFACE");
if (TSERVICES_INTERFACE != null && TSERVICES_INTERFACE.length() > 0) {
SERVICES_INTERFACE = TSERVICES_INTERFACE;
}
Class c = Class.forName(SERVICES_INTERFACE);
Method[] methods = c.getMethods();
for (int i = 0; i < methods.length; i++) {
String method_name = methods[i].getName();
double tmp = Math.pow(2, i);
Long permission = new Long((long) tmp);
ALL_METHOD_PERMISSION.put(method_name, permission);
String name_zh = props.getProperty(method_name);
if (name_zh != null && name_zh.trim().length() > 0) {
String temp_name_zh = new String(name_zh
.getBytes("ISO-8859-1"), "UTF-8");
ALL_METHOD_PERMISSION_ZH.put(permission, temp_name_zh);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从woss.config文件中读取key,value封装成Properties返回
*
* @return
*/
private Properties getProperties() {
Properties props = new Properties();
try {
props.load(PermissionManager.class
.getResourceAsStream("../woss.txt"));
} catch (IOException e) {
e.printStackTrace();
}
return props;
}
/**
* 返回英文方法,权限表
*
* @return
*/
public Map<String, Long> getALL_METHOD_PERMISSION() {
return ALL_METHOD_PERMISSION;
}
/**
* 返回中文方法,权限表
*
* @return
*/
public Map<String, Long> getALL_METHOD_PERMISSION_ZH() {
return ALL_METHOD_PERMISSION_ZH;
}
/**
* 根据方法名得到相应的权限值
*
* @param name
* 方法名
*
* @return 权限
*/
public long getPermissionByMethodName(String methodName) {
return ALL_METHOD_PERMISSION.get(methodName);
}
/**
* 得到最大权限
*
* @return 返回最大权限
*/
public long getMaxPermissionValue() {
long p = 0;
Collection<Long> permissions = ALL_METHOD_PERMISSION.values();
Iterator it = permissions.iterator();
while (it.hasNext()) {
p += (Long) it.next();
}
return p;
}
/**
* 验证权限
*
* @param 用户拥有的权限值
* @param 用户要调用的方法
* @return 用户有权调用此方法返回true,否则返回false
*/
public boolean authoricate(Long rolePid, String method_name) {
if (rolePid == 0)
return false;
long method_permission = getPermissionByMethodName(method_name);
return ((method_permission & rolePid) == method_permission);
}
/**
* 得到本对象实例
*
* @return
*/
public synchronized static PermissionManager getInstance() {
if (pm == null) {
pm = new PermissionManager();
}
return pm;
}
public static void main(String[] args) {
PermissionManager pm = PermissionManager.getInstance();
pm.authoricate(32L, "userRegistor");
Map map = pm.getALL_METHOD_PERMISSION_ZH();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Long key = (Long) iter.next();
String value = (String) map.get(key);
System.out.println("key:" + key);
System.out.println("value:" + value);
}
System.out.println("**********" + pm.getMaxPermissionValue());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -