zoukankan      html  css  js  c++  java
  • 55

    package org.zttc.itat.auth.model;
    
    /**
     * 权限控制的关键类,这个类用来存储主体和资源之间的关系,用来确定主体能够对哪些资源进行哪些操作
     */
    public class ACL {
        private int id;
        /**
         * 主体类型  role user...
         */
        private String ptype;
        /**
         * 资源类型
         */
        private String rtype;
        /**
         * 主体id
         */
        private int pid;
        /**
         * 资源id
         */
        private int rid;
        /**
         * 对方法的操作状态,存储的是一个4个字节的整数,其实就可以存储1-31为,共32个操作
         * 0000000...1011  可以进行CREATE,READ,DELETE,无法进行UPDATE
         * 数据库中存储的是整数,11
         */
        private int aclState;
        
        
        public void setMenuType(){
            this.rtype = MenuResource.RESOURCE_TYPE;
        }
        
        public void setControllerType(){
            this.rtype = ControllerResource.RESOURCE_TYPE;
        }
        
        public void setUserType(){
            this.ptype = User.PRINCIPAL_TYPE;
        }
        
        public void setRoleType(){
            this.ptype = Role.PRINCIPAL_TYPE;
        }
        /**
         * 设置权限,在某个位置设置访问或无法访问
         * @param index
         * @param permit
         */
        public void setPermission(int index,boolean permit){
            if(index<0 || index>21){
                //throw new Exception("权限的位置只能在0-31直接");
            }
            this.aclState = setBit(this.aclState,index,permit);
        }
        /**
         * 具体进行设置
         * @param state
         * @param index
         * @param permit
         */
        public int setBit(int state,int index,boolean permit){
            int tmp = 1;
            tmp = tmp<<index;
            if(permit){
                state = state | tmp;
            }else{
                state = ~tmp & state;
            }
            return state;
        }
        
        /**
         * 在某一个位置是否可以访问
         * @param index
         */
        public boolean checkPermission(int index){
            int tmp = 1;
            tmp = tmp<<index;
            int num = tmp & this.aclState;
            return num >0;
        }
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getPtype() {
            return ptype;
        }
        public void setPtype(String ptype) {
            this.ptype = ptype;
        }
        public String getRtype() {
            return rtype;
        }
        public void setRtype(String rtype) {
            this.rtype = rtype;
        }
        public int getPid() {
            return pid;
        }
        public void setPid(int pid) {
            this.pid = pid;
        }
        public int getRid() {
            return rid;
        }
        public void setRid(int rid) {
            this.rid = rid;
        }
        public int getAclState() {
            return aclState;
        }
        public void setAclState(int aclState) {
            this.aclState = aclState;
        }
        
        
        
    }
    package org.zttc.itat.auth.model;
    
    /**
     * Controller资源的操作方法类,用来确定某个Controller资源的操作所对应的方法
     * @author hfw2192
     *
     */
    //@Table
    //@Entity
    public class ControllerOper implements SystemResource{
        /**
         * 
         */
        private int id;
        /**
         * 资源的标识,默认就通过ADD,DELETE,UPDATE,READ
         */
        private String sn;
        /**
         * 资源的方法,一个操作默认会对应多个方法add|addInput
         * 在初始化的时候,可以根据方法的名称来确定,如add开头就是ADD,其他没有声明的都是READ(list,show..)
         */
        private String methodName;
        /**
         * 
         */
        private String name;
        /**
         * 方法的索引位置
         */
        private int indexPos;
        /**
         * 所对应的资源id
         */
        private int rid;//这里使用外键也可以,直接写一个ControllerResource
        /**
         * 资源sn
         */
        private String rsn;
        
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }
        public String getMethodName() {
            return methodName;
        }
        public void setMethodName(String methodName) {
            //第一次添加
            if(this.methodName == null || "".equals(this.methodName)){
                this.methodName = methodName;
            }else{
                if(this.methodName.indexOf(methodName) >= 0){
                    //原有的className已经包含了,就直接返回
                    return;
                }
                this.methodName += "\|" + methodName;
            }
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getIndexPos() {
            return indexPos;
        }
        public void setIndexPos(int indexPos) {
            this.indexPos = indexPos;
        }
        public int getRid() {
            return rid;
        }
        public void setRid(int rid) {
            this.rid = rid;
        }
        public String getRsn() {
            return rsn;
        }
        public void setRsn(String rsn) {
            this.rsn = rsn;
        }
        
        
        
    }
    package org.zttc.itat.auth.model;
    
    
    /**
     * 控制器资源
     * @author hfw2192
     *
     */
    public class ControllerResource implements SystemResource{
        
        public static final String RESOURCE_TYPE="controller";
        /**
         * 资源的标识
         */
        private int id;
        /**
         * 资源的名称,中文名称:组织机构管理,用户管理
         */
        private String name;//资源名称
        /**
         * 资源的唯一标识,在我们的系统中,默认使用类名进行标识
         */
        private String sn;
        /**
         * 资源的父类标识
         */
        private String psn;
        /**
         * 资源所对应的类名,有可能有多个类,所以通过|进行分隔
         * Org.zttc.itat.sys...OrgController|....OrgTypeController
         */
        private String className;
        /**
         * 资源的排序号
         */
        private int orderNum;//资源排序号
        /**
         * 资源的父类,存在的主要意义是为了方便在授权的时候进行选择,通过树的方式
         */
        private ControllerResource parent;
        
        public void setClassName(String className){
            //第一次添加
            if(this.className == null || "".equals(this.className)){
                this.className = className;
            }else{
                if(this.className.indexOf(className) >= 0){
                    //原有的className已经包含了,就直接返回
                    return;
                }
                this.className += "\|" + className;
            }
        }
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }
        public String getPsn() {
            return psn;
        }
        public void setPsn(String psn) {
            this.psn = psn;
        }
        public String getClassName() {
            return className;
        }
        /*public void setClassName(String className) {
            this.className = className;
        }*/
        public int getOrderNum() {
            return orderNum;
        }
        public void setOrderNum(int orderNum) {
            this.orderNum = orderNum;
        }
        public ControllerResource getParent() {
            return parent;
        }
        public void setParent(ControllerResource parent) {
            this.parent = parent;
        }
        
    }
    package org.zttc.itat.auth.model;
    
    public enum MenuPos {
        NAV_LEFT("左边导航"),NAV_TOP("顶部菜单"),MODEL_NAV("模块导航"),MODEL_OPER("模块操作");
        
        
        private MenuPos(String name) {
            this.name = name;
        }
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        
        
        
    }
    package org.zttc.itat.auth.model;
    
    
    /**
     * 菜单资源
     * @author hfw2192
     *
     */
    public class MenuResource implements SystemResource{
        
        public static final String RESOURCE_TYPE = "menu";
        /**
         * 
         */
        private int id;
        /**
         * 菜单的名称,中文名称
         */
        private String name;
        /**
         * 菜单的sn,不能重复,讲来要通过这个sn,自动生成页面的超链接,然后为超链接增加一个属性auth_sn,
         * 其属性值就是sn
         */
        private String sn;
        /**
         * 菜单所在的位置
         */
        private MenuPos menuPos;
        /**
         * 菜单的超链接
         */
        private String href;
        /**
         * 菜单的图标
         */
        private String icon;
        /**
         * 菜单的排序号
         */
        private int orderNum;
        /**
         * 是否显示菜单,1表示显示,-1表示不显示
         */
        private int display;
        /**
         * 菜单的父类sn,方便初始化的时候做操作
         */
        private String psn;
        /**
         * 菜单的父类菜单,在授权的时候比较方便
         */
        private MenuResource parent;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }
        public MenuPos getMenuPos() {
            return menuPos;
        }
        public void setMenuPos(MenuPos menuPos) {
            this.menuPos = menuPos;
        }
        public String getHref() {
            return href;
        }
        public void setHref(String href) {
            this.href = href;
        }
        public String getIcon() {
            return icon;
        }
        public void setIcon(String icon) {
            this.icon = icon;
        }
        public int getOrderNum() {
            return orderNum;
        }
        public void setOrderNum(int orderNum) {
            this.orderNum = orderNum;
        }
        public String getPsn() {
            return psn;
        }
        public void setPsn(String psn) {
            this.psn = psn;
        }
        
        public int getDisplay() {
            return display;
        }
        public void setDisplay(int display) {
            this.display = display;
        }
        public MenuResource getParent() {
            return parent;
        }
        public void setParent(MenuResource parent) {
            this.parent = parent;
        }
        
        
    }
    package org.zttc.itat.auth.model;
    
    
    /**
     * 声明式的接口,没有任何方法,实现了这个接口的所有 类都是权限控制的主体
     * @author hfw2192
     *
     */
    public interface Principal {
    
    }
    package org.zttc.itat.auth.model;
    
    public class Role implements Principal{
        public static final String PRINCIPAL_TYPE="role";
        
        private int id;
        private String name;
        private String sn;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }
        
        
        
    }
    package org.zttc.itat.auth.model;
    
    public class ServiceController implements SystemResource{
    
    }
    package org.zttc.itat.auth.model;
    
    /**
     * 资源对象的声明式接口
     * @author hfw2192
     *
     */
    public interface SystemResource {
    
    }
    package org.zttc.itat.auth.model;
    
    /**
     * 用户主体
     * @author hfw2192
     *
     */
    public class User implements Principal{
        public static final String PRINCIPAL_TYPE="user";
        private int id;
        private String username;
        private String password;
        private String nickname;
        private int state;
        
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getNickname() {
            return nickname;
        }
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
        public int getState() {
            return state;
        }
        public void setState(int state) {
            this.state = state;
        }
        
        
    }
    package org.zttc.itat.auth.model;
    
    /**
     * 用户和角色的关联表
     * @author hfw2192
     *
     */
    public class UserRole {
        private int id;
        private User user;
        private Role role;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
        public Role getRole() {
            return role;
        }
        public void setRole(Role role) {
            this.role = role;
        }
        
    }

    package org.zttc.itat.auth.model;


    /**
     * 菜单资源
     * @author hfw2192
     *
     */
    public class MenuResource implements SystemResource{
        
        public static final String RESOURCE_TYPE = "menu";
        /**
         *
         */
        private int id;
        /**
         * 菜单的名称,中文名称
         */
        private String name;
        /**
         * 菜单的sn,不能重复,讲来要通过这个sn,自动生成页面的超链接,然后为超链接增加一个属性auth_sn,
         * 其属性值就是sn
         */
        private String sn;
        /**
         * 菜单所在的位置
         */
        private MenuPos menuPos;
        /**
         * 菜单的超链接
         */
        private String href;
        /**
         * 菜单的图标
         */
        private String icon;
        /**
         * 菜单的排序号
         */
        private int orderNum;
        /**
         * 是否显示菜单,1表示显示,-1表示不显示
         */
        private int display;
        /**
         * 菜单的父类sn,方便初始化的时候做操作
         */
        private String psn;
        /**
         * 菜单的父类菜单,在授权的时候比较方便
         */
        private MenuResource parent;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSn() {
            return sn;
        }
        public void setSn(String sn) {
            this.sn = sn;
        }
        public MenuPos getMenuPos() {
            return menuPos;
        }
        public void setMenuPos(MenuPos menuPos) {
            this.menuPos = menuPos;
        }
        public String getHref() {
            return href;
        }
        public void setHref(String href) {
            this.href = href;
        }
        public String getIcon() {
            return icon;
        }
        public void setIcon(String icon) {
            this.icon = icon;
        }
        public int getOrderNum() {
            return orderNum;
        }
        public void setOrderNum(int orderNum) {
            this.orderNum = orderNum;
        }
        public String getPsn() {
            return psn;
        }
        public void setPsn(String psn) {
            this.psn = psn;
        }
        
        public int getDisplay() {
            return display;
        }
        public void setDisplay(int display) {
            this.display = display;
        }
        public MenuResource getParent() {
            return parent;
        }
        public void setParent(MenuResource parent) {
            this.parent = parent;
        }
        
        
    }

  • 相关阅读:
    二叉树的建立和遍历
    canvas基础入门(一)canvas的width、height于css样式中的宽高区别
    js实现放大镜效果
    ios中页面底部输入框,position:fixed元素的问题
    js input复选框选中父级同时子级也选中
    js apply和call
    javascript闭包理解
    vue.js vue-jsonp解决跨域问题
    vue.js请求数据(axios)
    vuex
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/6485413.html
Copyright © 2011-2022 走看看