权限组件五(权限)(完)

原创 2004年12月31日 13:31:00
最后,我定义了一个Permission类把所有的元素连接起来形成一个完整权限判断组件。代码如下。用户继承该类时要完两个方法getDenyRule,getAcceptRule即可。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

    当我们进行权限判断时只要调用hasPermission(User user,HashMap oldData,Input input)即可。其后三个参数分别为用户,数据,输入。用户为在判断的人,数据为原有数据,比较进行更新操作时,oldData为老数据,input在前一部分有介绍,为一个通用的输入方式。比WEB输入PostGet方式等,可以转换成一个Input类,也可以手动新建一个Input.为操作以及其数据的集合。

    Permission类中进行了DenyRuleAcceptRule的判断,只要有一个DenyRule规则符合要求,则认为该用户无权限进行操作,如果用户的没被DenyRule排除则进行AcceptRule的判断,只要有一个规则符合要求则认为该用户有权限。

 

    因为本人比较懒所以Permission的实现还没有写出一个通用的。

   

    综上所述,使用此权限组件要进行以下几项工作:

1、 编写User的实现。

2、 编写Group的实现。

3、 编写Role的实现。

4、 编写Permission的实现。(过段时间我会摆个通用的上来)

5、 编写NRule(同你的系统要进行权限判断相对应)。

6、 在程序中调用Permission.hasPermission判断。

 

 

 

 

======================Permission.java===============================

package org.fswan.permission;

 

import java.util.ArrayList;

import java.util.HashMap;

import org.fswan.Input;

 

/**

 * 权限判断类

 */

public abstract class Permission

{

    public String permission;

    public String subPermission;

    protected ArrayList prop;

    public boolean hasPermission(User user,HashMap oldData,Input input)

    {

      Rule[] rules = getDenyRule();

        boolean accept = true;

       for (int i = 0; i < rules.length; i++)

       {

           if(!rules[i].pass(this,user,oldData,input))

           {

               accept = false;

               break;

           }

       }

        if(accept)return false;

       rules = getAcceptRule();

       for (int i = 0; i < rules.length; i++)

       {

           if(!rules[i].pass(this,user,oldData,input))

           return false;

       }

        return true;

    }

    public String getPermissionName()

    {

        if(subPermission==null)return permission;

        return permission+":"+subPermission;

    }

    public ArrayList getPermissionItem()

    {

        return prop;

    }

    public abstract Rule[] getDenyRule();

    public abstract Rule[] getAcceptRule();

}

闻风丧胆系统角色权限五张表的设计

众所周知,权限系统是每个系统里面必备的最基本的系统,然而权限系统设计有时挺麻烦的,,现在整理了下,给正在开发此模块的朋友一个思路!  设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映...
  • BlankTe
  • BlankTe
  • 2017年10月09日 17:10
  • 681

经典权限系统设计(五张表)

大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。   各表的大体表结构如下:  ...
  • chenjinping123
  • chenjinping123
  • 2012年09月12日 16:18
  • 28753

系统权限设计(五张表)

大致用到5张表:三张主表,两张从表 主表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo) 从表:用户角色表(UserRole)、角色菜单表(RoleMenu)。...
  • he172073675
  • he172073675
  • 2016年10月30日 16:16
  • 2549

经典角色权限系统设计五张表及拓展应用

设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。   大致用到5张表:用户表(...
  • gebitan505
  • gebitan505
  • 2017年09月22日 16:27
  • 775

用户权限设置5张表

--权限表(资源和权限合并) CREATE TABLE sys_permission (   id number(20) PRIMARY KEY NOT NULL,-- COMMENT '主键',...
  • JesseCary
  • JesseCary
  • 2017年01月04日 19:21
  • 428

项目在线培训分析(一)权限5张表

1. 对于 项目 我的认知就是 把  所有 的                       只有少部分人 会在 数据库操作的 工作            转化为                    ...
  • sinat_27639721
  • sinat_27639721
  • 2016年09月28日 15:56
  • 1012

权限管理数据表设计说明(五张表)

权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计...
  • u010788143
  • u010788143
  • 2017年08月31日 11:09
  • 909

shiro-02经典权限五张表

注:  所有shiro使用方法都是围绕springrain项目进行的. 具体的springrain项目demo可以在之前的博客中找到.经典权限五张表指的是:  ①用户表  ②用户-角色表  ③...
  • lx_nhs
  • lx_nhs
  • 2017年12月05日 20:36
  • 229

Vue2.0权限树组件

项目使用的饿了么的Element-Ui,权限树使用其树形控件: 刚开始没有特殊需求,三级分支,效果看着还可以。但是接下来的新需求:增加页面操作按钮权限,即达到四级分支,同时要求四级权限布局方...
  • archer119
  • archer119
  • 2017年06月10日 22:49
  • 2156

权限管理组件的设计、开发思路

应用软件中通常包含用户的权限管理功能,往往不同应用系统对权限管理功能的需求不同,有自己的权限模型,权限的授权、鉴权策略。权限管理是相对独立的一个功能模块,由于功能需求不同、采用模型设计、实现技术等的不...
  • yan_dk
  • yan_dk
  • 2012年02月01日 16:50
  • 807
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:权限组件五(权限)(完)
举报原因:
原因补充:

(最多只允许输入30个字)