Ralasafe访问控制(权限管理)中间件的配置工作非常少。因为项目发起人非常讨厌配置。因此,“己所不欲,勿施于人”,Ralasafe的配置也非常少。

Ralasafe配置工作只有3个:

  1. 数据源配置
  2. 用户元数据配置
  3. web.xml配置策略XML文件存储路径

权限逻辑配置,使用Ralasafe web控制端在线图形化设计,无需手工配置。

Ralasafe将来可能会采取图形化方式处理前面提到的3种配置工作。但现在还是让我们先熟悉一下配置工作吧。

数据源配置

 

配置入口

Ralasafe不仅强调权限与业务解耦合,也强调权限数据与业务数据解耦合,独立保存。

Ralasafe数据源的入口是WEB-INF/ralasafe/datasources.xml文件,里面配置2个数据源。

  1. 其中1个是name=“ralasafe”的权限数据源,该数据源里面将保存权限数据。configFile属性指该权限数据源的详细配置信息,名称随意,但对应的文件必须也在WEB-INF/ralasafe目录下;
  2. 另1个是业务数据源,name属性自定义,只要不等于“ralasafe”即可。configFile属性指该业务数据源的详细配置信息,名称随意,但对 应的文件必须也在WEB-INF/ralasafe目录下。schema属性可选(可以有,也可以没有),该属性表示在数据查询页面显示数据源哪几个 schema的表和视图。

下面是ralasafe demo自带的数据源配置信息:

<?xml version="1.0"?>
<datasources>
<datasource name="ralasafe" configFile="ralasafe-db.properties"/>
<datasource name="app" configFile="app-ds.properties"
schemas="mydemo,ralasafe"/>
</datasources>

表示2个数据源:ralasafe和app。ralasafe数据源配置信息在ralasafe-db.properties文件里面;

app数据源配置信息在app-ds.properties里面;在设计数据查询页面,指显示mydemo和ralasafe两个schema里面的表和视图。

如下截图是,进入Ralasafe web控制端的查询设计界面,显示的数据库表和视图信息:

如果,我将datasources.xml配置文件的schemas改成schemas=“mydemo”。将只显示mydemo里面的数据表和视图,不显示ralasafe里面的表和视图。

详细配置信息

前面讲到的configFile里面提到的配置文件,又如何配置数据源呢?Ralasafe又支持几种配置方式的数据源呢?

Ralasafe支持3种方式配置数据源,且3种配置方式,都随发行包提供了示例。这些示例就是在WEB-INF/ralasafe目录下的ralasafe-db.properties,jndi.properties和method.properties。 下面详细叙述它们。

DBCP数据源

ralasafe-db.properties就是DBCP(http://commons.apache.org/dbcp/)数据源配置示例,Ralasafe将按照配置信息启动一个DBCP数据源。

配置参数有jdbc驱动、用户名、密码和url等。配置参数与DBCP一致。

jdbcDriver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost/ralasafe?useUnicode=true
jdbcUser=root
jdbcPassword=1234
connectionPoolMaxSize=5
connectionPoolMaxIdle=2
connectionPoolMaxWait=60000
connectionPoolMinSize=0

JNDI数据源

JNDI数据源在Java EE程序里面非常常见。Ralasafe使用JNDI数据源,配置参数非常简单。

写上type=jndi,然后配上jndi的名称即可。

以下是配置示例:

type=jndi
jndiName=jdbc/datasourceName

通过方法调用获取数据源

假如,你的数据源需要通过调用API暴露(当然,我承认这种情况非常少)。当初,我是这么想的:或许有一种数据源我没用考虑到。那么就通过某个java方法调用获取吧。

假如你有这样的API:

public javax.sql.DataSource com.your.company.db.DatasourceProvider.getDatasource();

那么对应的配置就是:

type=method
class=com.yourcompany.db.DataSourceProvider
method=getDatasource

创建基本权限数据库表

当权限数据源配置好后,你还需要在权限数据库执行如下脚本,创建基础权限数据表。

-- ralasafe schema
CREATE TABLE ralasafe_sequence (
currentValue int,
name varchar(100) NOT NULL,
PRIMARY KEY( name )
);
CREATE TABLE usertype (
name varchar(100) NOT NULL,
description varchar(500),
userMetadataXML varchar(4000),
PRIMARY KEY(name)
);
CREATE TABLE application (
name varchar(100) NOT NULL,
description varchar(500),
PRIMARY KEY(name)
);
CREATE TABLE applicationusertype (
appName varchar(100) NOT NULL,
userTypeName varchar(100) NOT NULL,
userMetadataStr varchar(1000),
PRIMARY KEY(appName, userTypeName)
);

以上脚本,也随发行包提供,文件名称是sql/create-database.sql。

用户元数据配置

用户元数据的目的,就是为了说明当前应用系统的用户信息保存在哪里,有哪些字段,对应的业务意义是什么。

在Ralasafe权限策略里面,钻取用户属性,我们使用业务意义的名称,而不是数据库列字段名称。

你可以在本地配置好用户元数据文件,然后通过Ralasafe web控制端安装。安装方法为,首先登陆Ralasafe web控制端,比如:http://localhost:8080/demo/ralasafe/designer.rls,在左侧“架构师”一栏中选择【用户元数据】菜单;接着在“用户元数据”页面中,填写描述,并选择对应的用户元数据文件;最后,点击【Submit】按钮,系统将开始安装用户元数据。操作过程如下图所示:

当用户元数据被顺利安装后,会在权限数据库生成 9 张表:

ralasafe_businessdata,ralasafe_decision_entitlement,ralasafe_privilege,ralasafe_query,ralasafe_query_entitlement,ralasafe_ralasafe_userrole,ralasafe_role,ralasafe_roleprivilege 和ralasafe_usercategory。和前面手工创建的4张表一起,权限数据库应该共有 13 张表。如果没有 13 张表,说明安装用户元数据过程失败,需要重新安装。

Ralasafe 1.1-版本还有ralasafe-backup表。该表在1.2+版本不再使用。

如下是Ralasafe demo应用的用户元数据配置信息:

<?xml version="1.0"?>
<user>
<table ds="app" name="mainTable" sqlName="UserView"
uniqueFields="loginName">
<field name="id" columnName="id" sqlType="int" javaType="java.lang.Integer" />
<field name="name" columnName="name" sqlType="varchar(40)"
javaType="java.lang.String" displayName="Name" show="true" />
<field name="companyName" columnName="companyName" sqlType="varchar(100)"
javaType="java.lang.String" displayName="Company" show="true" />
<field name="loginName" columnName="loginName" sqlType="varchar(40)"
javaType="java.lang.String" />
<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>

如上配置表示:

  1. 用户表在app数据源下,表名称是sqlName=“UserView”;
  2. name=“mainTable”是目前固定写法,不能改变,在后继版本会引入新的意义;
  3. 这个表的unique fields是”loginName”,如果有多个字段(如loginName,companyId)确定唯一用户,中间用逗号隔开即可。这里填写的是字 段必须在field元素里面有配置,而且填写的是field name属性值,而不是columnName属性值;
  4. field元素表示用户表的字段,每个字段的数据库列字段名称是什么(columnName属性),对应的业务意义是什么(name属性);
  5. 其中有2个业务意义字段是必须的:id和name,分别代表用户唯一id和用户名称;
  6. field的show=“true”表示该字段在页面显示,displayName属性表示该字段在页面显示名称(测试权限策略的时候,比如测试某用户查 询订单权限时,Ralasafe弹出的选择选择用户对话框,将显示show=”true”的用户字段,各个字段的title就是 displayName)。

弹出用户选择对话框截图:

注:

  1. 用户元数据配置支持数据库表和数据库视图。如果你的用户信息分散在多个表里面,你只要创建一个视图将用户各个字段统一到视图里面,然后在table的sqlName属性设置为你新创建的视图。

       Ralasafe demo的用户信息被统一到视图里面:
    create or replace view userview as select d."ID",d."LOGINNAME",d."NAME",d."PASSWORD",d."COMPANYID",d."DEPARTMENTID",d."ISMANAGER",
    d."HIREDATE",c.companylevel,c.name as companyName from demouser d, company c
    where d.companyid=c.id;
  2. 如果你的用户表没有id字段,但有一个唯一字段,那么可以将该字段等同于id字段设置到id里面。如:数据列myname是唯一字段,那么id字段可以设置为<field name=“id” columnName=“myname”….
  3. 如果你的用户表没有id字段,同时有多个唯一字段组合,那么你应该创建视图“做出”一个逻辑id字段,然后设置到id里面。如数据列mynamecompanyId是唯一字段组合,可以创建视图

    CREATE VIEW myview AS SELECT myname||companyId AS userId...

XML文件存储路径配置

因为各个数据库之间平台移植,大字段往往造成很大困难。所以,我们干脆将XML文件存在文件系统里面,就不存放在数据库里面。这样移植就方便很多;Ralasafe也多了一项配置工作——XML文件存储路径。

打开WEB-INF/web.xml,找到如下代码行:

	<servlet>
<servlet-name>ralasafe</servlet-name>
<servlet-class>org.ralasafe.servlet.RalasafeController</servlet-class>
<init-param>
<param-name>repositoryDir</param-name>
<param-value>/home/julian/workspace/ralasafe/xml</param-value>
</init-param>
<init-param>
<param-name>secured</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>

设置repositoryDir的参数值为你存放XML存储路径的地方,如:d:/yourproject/xml等。等安装往用户元数据后,系统会自动在该目录下生成一些目录。目录结构是:

${repositoryDir}
|____ralasafe
|____businessData
|____query
|____userCategory
|____usertype

该配置也支持相对目录,只要new File(${repositoryDir})能找到对应目录即可。详情参考:论坛文章:配置repositoryDir的相对路径

原文地址:https://www.cnblogs.com/skyme/articles/3208310.html

Ralasafe配置手册的更多相关文章

  1. Varnish缓存服务器的搭建配置手册

    Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...

  2. Ubuntu_10.04下Hadoop-0.20.2集群配置手册

    Ubuntu_10.04下Hadoop-0.20.2集群配置手册 一.软硬件环境的准备 下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware ...

  3. nginx1.9.4 +php 5.5.29+yii2.0配置手册

    nginx1.9.4 +php 5.5.29+yii2.0配置手册 目录 一.    php5.5.29安装配置    2 二.    nginx1.9.4安装配置    2 三.    yii2.0 ...

  4. QC邮件转发工具Mail Direct安装配置手册

    QC邮件转发工具Mail Direct安装配置手册 2010-06-11 10:00:56| 分类: 软件测试 | 标签: |举报 |字号大中小 订阅 QC邮件转发工具安装配置手册 由于公司没有独立的 ...

  5. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  6. Git 安装配置手册

    Git 安装配置手册 首先我们要了解 Git 是类似于 SVN 用来管理项目的 首先要先下载 Git ,这个东西相当于一个核,是该功能的核心 下载地址(<https://gitforwindow ...

  7. 网站 HTTP 升级 HTTPS 完全配置手册

    网站 HTTP 升级 HTTPS 完全配置手册 今天,所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布,详细版本号为v68.0.3440.75,上一个正式版v67.0.3 ...

  8. 泛微云桥e-birdge之金蝶云之家集成配置手册

    最近在配置金蝶云之家与泛微ecology的打通,没有看官方文档,直接配置,一直配置不通,看了官方文档后知道了少配置参数了,转载一下,省得四处去找了. 泛微云桥e-birdge之金蝶云之家集成配置手册 ...

  9. linux服务器基本安全配置手册

    转:忘了在哪转的,直接复制到笔记里了,贴出来分享 假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素.一份正确的linux基本安全配置手册就显得格外重要. ...

随机推荐

  1. IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结(转)

    IntelliJ IDEA使用教程 (总目录篇) 首先,使用的时候,自己得先在电脑上安装个小乌龟.也就是svn啦. 第一步安装小乌龟. 如下: 具体安装好像没什么具体要求,一路next,就好. 如上图 ...

  2. 关于sublime text2的一些问题(为解决)

    1. 编写markdown文件后,如何转成pdf ? 2. 执行程序时,如何在控制台输入数据?

  3. 修正Thinkphp 3.2 分页Page类以支持URL路由

    http://www.thinkphp.cn/topic/22114.html 最终目的实现以http://www.fl900.com/product/lists/1-0-0-1.html这样的URL ...

  4. LeetCode136 Single Number, LeetCode137 Single Number II, LeetCode260 Single Number III

    136. Single Number Given an array of integers, every element appears twice except for one. Find that ...

  5. docker push dial tcp *.*.*.*:443 getsockopt: connection refused

    docker 在提交镜像的时候出现以下错误. 我用的是本地的仓库,所以tcp后面是我的ip地址. 错误信息: #docker push ubuntu docker push  dial tcp 192 ...

  6. js不停地触发按钮的事件

    例子:不断地发匿名邮件 http://tool.chacuo.net/mailsend 在控制台写:setInterval('$(".convert :input[arg]").t ...

  7. Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法

    1.可以用javaScript解决在你想控制跳转的页面,比如login.jsp中的<head>与</head>之间加入以下代码: <script language=”Ja ...

  8. 25-1 request模块介绍

    requests模块 - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能 ...

  9. MyEclipse2016项目内复制一个项目,如何更改项目的访问路径

    在MyEclipse2010版本如果复制了一个项目,需要改项目的访问路径的话,可以选中项目右键,点开Properties,在顶部搜索web,就会出现如下内容,这是只需要在里面更改路径就可以了. 而在2 ...

  10. HDFS概念名称节点和数据节点-名称节点