linux文件权限有3个:java
r | 读 | 4 |
w | 写 | 2 |
x | 执行 | 1 |
作web权限控制也能够参考这样进行。下面作个demo,有时间实际应用看看。linux
import java.util.ArrayList; import java.util.List; /** * 参考linux下文件的权限 * * @author 登琼 2016-09-26 18:08 * */ public class PowerSecurity4Linux { /** * 定义权限值 */ List<Power> powerList = new ArrayList<>(); { powerList.add(new Power("查看", 1)); powerList.add(new Power("新增", 2)); powerList.add(new Power("更新", 4)); powerList.add(new Power("删除", 8)); powerList.add(new Power("上传导入", 16)); powerList.add(new Power("下载导出", 32)); } public static void main(String[] args) { PowerSecurity4Linux p = new PowerSecurity4Linux(); for (int i = 0; i < 100; i++) { p.showAllPower(i); } } /** * 查询这个权限结果是否包含相关的权限 * * @param powerValue * 权限所有值 * @param value * 权限 * @return */ public boolean isPower(Integer powerValue, int value) { int a = powerValue / value; if (a == 1) { return true; } if (a == 0) { return false; } int maxPower = 0; int i = 2; while (i <= powerValue) { maxPower = i; i = i << 1; } powerValue = powerValue - maxPower; return isPower(powerValue, value); } /** * 打印这个权限值的全部权限名称 * * @param powerValue * 权限所有值 */ public void showAllPower(Integer powerValue) { StringBuffer a = new StringBuffer(); a.append(powerValue); a.append(":"); for (Power power : powerList) { if (isPower(powerValue, power.getValue())) { a.append(power.getName()); a.append(","); } } System.out.println(a); } } /** * 基础的权限 * * @author 登琼 * */ class Power { String name; int value; public Power(String name, int value) { super(); this.name = name; this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } }