`
metadmin
  • 浏览: 168386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

《玩转细粒度权限管理》 一,安装

阅读更多

 

 

第一章 安装

 

 

Metadmin 细粒度权限管理产品,将分散在系统各处的权限判断代码,集中起来统一管理;并提供权限设计器,通过界面设计,而不是编程或者书写 XML 配置的方式,达到各种细粒度控制目的。

 

Metadmin 是中间件,不是系统框架。安装过程非常简单,可以分为 2 个部分:

1.         library jar 包安装;

2.         web 包安装;

3.         用户元数据安装。

 

下面以 eclipse 为例,开始构建第一个例子。

下载

先到网站下载 metadmin.zip ,下载地址: www.metadmin.com 。将 metadmin.zip 解压到 metadmin 目录。

目录结构如图示:

metadmin 目录结构)

安装

eclipse 创建 FirstMetadmin web 工程( Metadmin 支持 jdk1.4+ )。

library jar 包安装

lib 复制到 FirstMetadmin 工程根目录,然后添加到 Java Build Path Java EE Module Dependencies

web 包安装

WebContent 目录下所有文件复制到 FirstMetadmin WebContent 目录下。

打开 web.xml ,修改第 28 行的 org.back.servlet.StartupServlet repositoryDir 参数值,改为将保存权限策略地址。比如: e:\FirstMetadmin\xml

 

安装过程基本完毕,现在开始把数据库配置好,并创建基本 Metadmin 数据库表。

权限数据表

Metadmin 需要访问两类数据库数据。

1.         权限管理数据,这些数据由 Metadmin 维护,例如权限、角色、授权策略等。

2.         业务数据,这些数据由业务系统维护, Metadmin 只需要读取相关数据来进行权限判断。

 

强烈建议创建 metadmin schema 以保存权限管理数据,和业务数据分开。

 

将解压的 Metadmin 目录下 sql 文件,在 metadmin schema 下执行,创建 4 张表。

配置 datasources.xml

WEB-INF/metadmin/datasources.xml 表明 metadmin 怎样连接数据库。连接方式有:

1.         apache dbcp 模式;

2.         jndi 模式;

3.         开发者自己编程托管模式。

具体配置方式,参考《用户手册》 http://www.metadmin.com/doc/main.html#数据源 2.6

 

默认提供了 dbcp 模式,而且连接的数据库是 mysql 。权限数据保存在 metadmin schema 下,业务数据在 mydemo schema 下。

 

<datasource name="demo" configFile="mysql.properties" schemas="mydemo, metadmin"/>

name=”demo” ,名字可以是不同于 metadmin 的任意字符串。

schemas=”mydemo, metadmin” ,表示当打开前台数据查询设计器时,只加载 mydemo metadmin schema 下表和视图。配置该选项的目的是,为了在数据库有很多 schema 情况下,加快 web 页面加载速度。

用户元数据安装

用户元数据是通过 XML 文件安装到 metadmin 系统, metadmin 还会根据该文件创建相关权限表格。

比如业务系统的用户表信息如下:

 

--用户信息表
create table demoUser (
       id integer NOT NULL,
       loginName varchar(30) NOT NULL unique,
       name varchar(30),
       password varchar(30),
       companyId integer,
       departmentId integer,
       isManager integer,
       primary key(id) );
--用户信息视图,关联company表获取公司级别信息
CREATE VIEW UserView AS
  select u.*,c.companyLevel from demoUser u, company c
  where u.companyId=c.id;
 

 

 

该系统的用户元数据信息应该是这样的:

 

<?xml version="1.0" encoding="gbk"?>
<user>
       <table ds="mydemo" name="mainTable" sqlName="UserView" uniqueFields="loginName">
              <field name="id" columnName="id" sqlType="int" javaType="java.lang.Integer"
                     displayName="ID" show="true" />
              <field name="name" columnName="name" sqlType="varchar(40)"
                     javaType="java.lang.String" displayName="姓名" show="true" />
              <field name="loginName" columnName="loginName" sqlType="varchar(40)"
                     javaType="java.lang.String" displayName="登录名" />
              <field name="password" columnName="password" sqlType="varchar(40)"
                     javaType="java.lang.String" />
              <field name="isManager" columnName="isManager" sqlType="int"
                     javaType="java.lang.Boolean" />
              <field name="companyId" columnName="companyId" sqlType="int"
                     javaType="java.lang.Integer" />
              <field name="departmentId" columnName="departmentId" sqlType="int"
                     javaType="java.lang.Integer" />
              <field name="companyLevel" columnName="companyLevel" sqlType="int"
                     javaType="java.lang.Integer" />
       </table>
</user>
 

 

 

注: name 属性等于 id name 的两个 field 配置必须存在,一个表示用户标识,另一个表示用户名称。

table 的属性描述如下:

ds ,数据源名称,就是 datasources.xml 里面的业务数据源名称;

name ,该属性目前必须是 mainTable ,不能改动;

sqlName ,用户表名称,可以是视图;

uniqueFields ,用户表哪些字段是唯一的,可以是多个字段的组合。一般情况下 id 信息是业务无意义的, uniqueFields 字段具有业务意义。 metadmin 支持输入 uniqueFields 字段对应的值,自动从数据库中查找匹配用户。

 

启动 tomcat 服务器,在浏览器输入地址: http://localhost:8080/FirstMetadmin/metadmin/userTypeMng ,通过该地址安装用户元数据文件。

 

至此,所有 Metadmin 安装工作已经完成。可以打开权限设计器进行权限管理工作,设计器地址: http://localhost:8080/FirstMetadmin/metadmin/designer

设计器如图示:  

(附件为相关配置文件)

 

7
0
分享到:
评论
1 楼 daerqwert 2009-06-17  
东西很不错, 

相关推荐

    java的细粒度权限和shiro权限校验 ssh

    在Java开发中,细粒度权限管理是一种重要的安全机制,它允许系统对用户访问资源进行精确控制,确保每个用户只能操作他们被授权的部分。Shiro是Apache组织提供的一款强大且易用的Java安全框架,它提供了身份认证、...

    基于RBAC模型的细粒度权限控制

    总之,基于RBAC的细粒度权限控制提供了一种有效且灵活的方式来管理Web应用的访问权限。它通过角色将用户和权限关联,减少了管理开销,增强了系统的安全性和适应性。随着企业需求的不断变化,RBAC模型已成为现代权限...

    Android平台下细粒度权限管理机制设计与实现.pdf

    细粒度权限管理机制旨在解决粗粒度机制中的问题,它允许应用程序在运行时按需请求权限,而不是在安装时一次性获取。这样的设计可以提高用户对应用权限使用的透明度,让用户在了解每个权限的具体用途后做出决策,从而...

    Android平台细粒度权限管理系统的研究与实现.pdf

    为了实现细粒度的权限管理,研究者们通常需要开发一系列机制和工具来辅助权限的分析和控制。这些工具可能包括权限检测器,它能够分析应用程序请求的权限并检测潜在的隐私风险;以及权限管理器,它让用户可以自定义...

    电信设备-信息系统中细粒度权限管理方法.zip

    在信息系统中,细粒度权限管理(Fine-Grained Access Control, FGAC)是一种重要的安全策略,它允许系统管理员对用户访问资源的权限进行精确控制。这种方法与传统的粗粒度权限管理不同,后者通常只设置如“读取”、...

    基于SpringBoot+shiro实现数据库的细粒度动态权限管理系统

    基于SpringBoot+shiro实现数据库的细粒度动态权限管理系统 项目经过严格测试,确保可以运行!源码无需做任何更改! 基于SpringBoot+shiro实现数据库的细粒度动态权限管理系统 项目经过严格测试,确保可以运行!...

    基于Spring Security的细粒度权限管理系统设计源码

    这是一个基于Spring Security框架的细粒度权限管理系统,使用Java语言开发,同时包含JavaScript、CSS、HTML等多种编程语言。该项目共包含2447个文件,其中主要文件类型包括JavaScript、PNG图片、CSS、HTML、JAR包、...

    权限控制之粗粒度与细粒度概念及实现简单介绍

    细粒度权限管理可以在业务层去控制,例如部门经理只查询本部门员工信息,在service接口提供一个部门ID的参数,controller中根据当前用户的信息得到该用户属于哪个部门,调用service时将部门ID传入service,实现该...

    AppBoxPro细粒度通用权限管理框架源码

    AppBoxPro是一个强大的细粒度通用权限管理框架,它的核心目标是为企业级应用提供高效、安全的用户权限控制方案。该框架充分利用了FineUI库,一个用于构建Web应用的前端组件库,为开发者提供了丰富的界面元素和交互...

    【2018hit计算机系统安全】实验二:细粒度权限管理及实现root能力的分发和管理

    ### 细粒度权限管理与Root能力的分发和管理 #### 实验背景与目标 在计算机系统安全领域,权限管理是一项重要的技术措施,用于控制用户对于系统资源的访问级别。其中,细粒度权限管理和root能力的有效管理是确保...

    动态代理加注解实现细粒度的权限管理,具体到方法(前面上传的资源修改)

    细粒度权限管理是一种先进的策略,它允许管理员对用户访问系统资源的权限进行更精确的控制,而不是简单的“允许”或“禁止”。本资源通过动态代理和注解技术实现了一种细粒度的权限管理方案,具体到每个方法的级别,...

    细粒度位置追踪

    【细粒度位置追踪】是指在提供位置服务的过程中,对用户位置信息进行高度精确和细化的管理和保护。这种追踪方式通常涉及到移动设备,如智能手机,它们利用GPS或其他定位技术获取并分享用户的位置信息。然而,这种...

    动态代理加注解实现细粒度的权限管理,具体到方法

    动态代理与注解的结合,为实现这种细粒度的权限管理提供了一种灵活且高效的方法。下面我们将深入探讨这个话题。 首先,我们要理解动态代理的概念。动态代理是在运行时创建一个接口的实现类,该实现类能够调用实际的...

    基于python实现的细粒度情感分析:细粒度情感分析接口

    【项目介绍】:通过四个步骤,即可完成一个特定领域的细粒度情感分析! 2、文件概述 common_lib.py 提供常用方法(比如分词)和constants(比如正则、文件夹路径) corpus.py 处理语料 HMM.py 做序列标注 fgom ...

    细粒度管理Linux文件系统.pdf

    在Linux操作系统中,文件系统的细粒度管理是确保系统安全性和用户隐私的关键环节。传统的Linux文件系统访问控制机制基于UGO(用户-用户组-其他用户)模型,这种模型简单易懂,但有时不能满足复杂的权限管理需求。从...

    使用 Springboot 实现的基于数据库细粒度动态权限管理系统.zip

    这是一个基于Springboot框架实现的细粒度动态权限管理系统。该系统设计的核心目标是提供高度灵活且可扩展的权限控制机制,使系统管理员可以根据用户角色、资源以及操作来精确分配权限。下面将详细介绍这个系统的实现...

    细粒度用户评论情感分析数据集(2018-AI-challenger)

    数据集中的评价对象按照粒度不同划分为两个层次,层次一为粗粒度的评价对象,例如评论文本中涉及的服务、位置等要素;层次二为细粒度的情感对象,例如“服务”属性中的“服务人员态度”、“排队等候时间”等细粒度...

    权限管理服务平台, 利用shiro权限管理设计思想, 支持单用户多角色,比RBAC的资源管理更细粒度-grbac.zip

    本项目基于Apache Shiro权限管理框架进行设计,旨在提供一种更细粒度的权限控制方案,支持单用户拥有多个角色,这与传统的基于角色的访问控制(RBAC)模型相比,提供了更丰富的权限管理可能性。 Apache Shiro是一个...

    使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例.zip

    在本实例中,我们将探讨如何使用SpringBoot框架与Apache Shiro安全库来构建一个基于数据库的细粒度动态权限管理系统。这个系统允许管理员在数据库中动态管理用户、角色及权限,实现灵活的角色分配和权限控制。 **...

Global site tag (gtag.js) - Google Analytics