第一章 安裝
Metadmin 細粒度權(quán)限管理產(chǎn)品,將分散在系統(tǒng)各處的權(quán)限判斷代碼,集中起來統(tǒng)一管理;并提供權(quán)限設計器,通過界面設計,而不是編程或者書寫 XML 配置的方式,達到各種細粒度控制目的。
Metadmin 是中間件,不是系統(tǒng)框架。安裝過程非常簡單,可以分為 2 個部分:
1. library jar 包安裝;
2. web 包安裝;
3. 用戶元數(shù)據(jù)安裝。
下面以 eclipse 為例,開始構(gòu)建第一個例子。
下載
先到網(wǎng)站下載 metadmin.zip ,下載地址: www.metadmin.com 。將 metadmin.zip 解壓到 metadmin 目錄。
目錄結(jié)構(gòu)如圖示:

( metadmin 目錄結(jié)構(gòu))
安裝
在 eclipse 創(chuàng)建 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 參數(shù)值,改為將保存權(quán)限策略地址。比如:e:\FirstMetadmin\xml 。

安裝過程基本完畢,現(xiàn)在開始把數(shù)據(jù)庫配置好,并創(chuàng)建基本 Metadmin 數(shù)據(jù)庫表。
權(quán)限數(shù)據(jù)表
Metadmin 需要訪問兩類數(shù)據(jù)庫數(shù)據(jù)。
1. 權(quán)限管理數(shù)據(jù),這些數(shù)據(jù)由 Metadmin 維護,例如權(quán)限、角色、授權(quán)策略等。
2. 業(yè)務數(shù)據(jù),這些數(shù)據(jù)由業(yè)務系統(tǒng)維護, Metadmin 只需要讀取相關(guān)數(shù)據(jù)來進行權(quán)限判斷。
強烈建議創(chuàng)建 metadmin schema 以保存權(quán)限管理數(shù)據(jù),和業(yè)務數(shù)據(jù)分開。
將解壓的 Metadmin 目錄下 sql 文件,在 metadmin schema 下執(zhí)行,創(chuàng)建 4 張表。
配置 datasources.xml
WEB-INF/metadmin/datasources.xml 表明 metadmin 怎樣連接數(shù)據(jù)庫。連接方式有:
1. apache dbcp 模式;
2. jndi 模式;
3. 開發(fā)者自己編程托管模式。
具體配置方式,參考《用戶手冊》 http://www.metadmin.com/doc/main.html#數(shù)據(jù)源 2.6
默認提供了 dbcp 模式,而且連接的數(shù)據(jù)庫是 mysql 。權(quán)限數(shù)據(jù)保存在 metadmin schema 下,業(yè)務數(shù)據(jù)在 mydemo schema 下。
<datasource name="demo" configFile="mysql.properties" schemas="mydemo, metadmin"/>
name=”demo” ,名字可以是不同于 metadmin 的任意字符串。
schemas=”mydemo, metadmin” ,表示當打開前臺數(shù)據(jù)查詢設計器時,只加載 mydemo 和 metadmin schema 下表和視圖。配置該選項的目的是,為了在數(shù)據(jù)庫有很多 schema 情況下,加快 web 頁面加載速度。
用戶元數(shù)據(jù)安裝
用戶元數(shù)據(jù)是通過 XML 文件安裝到 metadmin 系統(tǒng), metadmin 還會根據(jù)該文件創(chuàng)建相關(guān)權(quán)限表格。
比如業(yè)務系統(tǒng)的用戶表信息如下:
-
- 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) );
-
- CREATE VIEW UserView AS
- select u.*,c.companyLevel from demoUser u, company c
- where u.companyId=c.id;
該系統(tǒng)的用戶元數(shù)據(jù)信息應該是這樣的:
- <?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 ,數(shù)據(jù)源名稱,就是 datasources.xml 里面的業(yè)務數(shù)據(jù)源名稱;
name ,該屬性目前必須是 mainTable ,不能改動;
sqlName ,用戶表名稱,可以是視圖;
uniqueFields ,用戶表哪些字段是唯一的,可以是多個字段的組合。一般情況下 id 信息是業(yè)務無意義的, uniqueFields 字段具有業(yè)務意義。 metadmin 支持輸入 uniqueFields 字段對應的值,自動從數(shù)據(jù)庫中查找匹配用戶。
啟動 tomcat 服務器,在瀏覽器輸入地址: http://localhost:8080/FirstMetadmin/metadmin/userTypeMng ,通過該地址安裝用戶元數(shù)據(jù)文件。
至此,所有 Metadmin 安裝工作已經(jīng)完成。可以打開權(quán)限設計器進行權(quán)限管理工作,設計器地址:http://localhost:8080/FirstMetadmin/metadmin/designer
設計器如圖示:

(相關(guān)配置文件下載)
posted on 2009-06-16 11:16
細粒度權(quán)限管理 閱讀(1264)
評論(1) 編輯 收藏