项目集成ralasafe权限中间件

什么是ralasafe呢,这里摘抄ralasafe-cookbook的引子:

Ralasafe访问控制中间件(数据级权限管理),是MIT协议开源免费软件产品。它使用图形

化方式处理各种数据级权限管理问题,包括数据库行列级、字段内容级权限问题;它还能处

理登录控制、功能级权限控制和URL权限认证。

使用Ralasafe,可以做到

1. 权限与业务解耦合——实践更清晰的系统架构

2. 权限管理完全图形化管理,不需要写一行代码或XML文件(基本配置信息除外,如

数据源和用户元数据)——实践高效开发

3. 所有访问控制被集中、规范化管理——实践访问模式的统一,减少安全漏洞

Ralasafe完全遵循JAVA EE规范,跨平台、web服务器和主流数据库。

如果想深入了解的话可以进入http://www.ralasafe.cn/社区进行研究讨论。我在这里来说说我在项目中集成ralasafe遇到的一些问题,供大家参考,避免大家走更多的弯路。

其实我是怀着激动的心情把ralasafe的Ralasafe_Cookbook、Ralasafe_dev_practice、Ralasafe_Configuration三本pdf看完了,因为现在还没有真正的第三方项目能真正的把业务和权限相分离,如果项目用Spring Security的话又感觉笨重、维护繁琐(只是个人意见)。

我看ralasafe的三大pdf是仔细看了3遍后才进行整合的,在整合前我还事先按文档把demo配置了一遍,确保没有问题后在我的项目中进行整合。

首先概要的说明下我们项目的主要应用框架是s2sh,数据库为db2,由于ralasafe官方没有给出db2的CREATE  TABLE SQL,所以我把我集成的语句贴出来:

CREATE

    TABLE ralasafe_sequence

    (

        currentValue INTEGER,

        name VARCHAR(100) NOT NULL,

        PRIMARY KEY (name)

    )

CREATE TABLE usertype (

  name varchar(100) NOT NULL,

  description varchar(500) default NULL,

  userMetadataXML varchar(4000) default NULL,

  PRIMARY KEY  (name)

) 

CREATE TABLE application (

  name varchar(100) NOT NULL,

  description varchar(500) default NULL,

  PRIMARY KEY  (name)

)

CREATE TABLE applicationusertype (

  appName varchar(100) NOT NULL,

  userTypeName varchar(100) NOT NULL,

  userMetadataStr varchar(1000) default NULL,

  PRIMARY KEY  (appName,userTypeName)

)


这四张表是ralasafe的权限的基础表

下面这个是依据我项目里创建的用户元数据所对应的视图,大家不明白可以去ralasafe的相关文档,这里就不赘述了

CREATE OR REPLACE VIEW USERVIEW AS

SELECT

   u.ID,

   u.USER_NAME,

   u.USER_PWD,

   d.DEPT_NAME,

   d.DEPT_TYPE

FROM

    TB_USER u,TB_DEPARTMENT d WHERE u.dept_id = d.id




具体的配置步骤是按照ralasafe相关文档做完后,项目重启,OK,没有问题。当我满怀信心的认为我已经成功的与项目集成后,问题来了,当我在ralasafe控制界面导入用户元数据时缺意外的报错了,如图:


然后我又仔细检查了配置,OK都没有问题啊,而且我跑demo时把数据源也换成db2的了,而且也没有问题啊。

我想会不会是某个过滤器影响了ralasafe的功能呢?刚好群里的小戴童鞋提示是struts2的过滤器的问题。

后来我把struts2的过滤器
<filter-mapping>

<filter-name>struts2</filter-name>

[color=red]<url-pattern>/*</url-pattern>[/color]

</filter-mapping>


换成
<filter-mapping>

<filter-name>struts2</filter-name>
[color=red]
<url-pattern>*.action</url-pattern>[/color]

</filter-mapping>


红色部分,OK,问题解决。

你可能感兴趣的:(Ralasafe)