Ralasafe访问控制(权限管理)中间件的配置工作非常少。因为项目发起人非常讨厌配置。因此,“己所不欲,勿施于人”,Ralasafe的配置也非常少。
Ralasafe配置工作只有3个:
-
数据源配置
-
用户元数据配置
-
web.xml配置策略XML文件存储路径
权限逻辑配置,使用Ralasafe web控制端在线图形化设计,无需手工配置。
Ralasafe将来可能会采取图形化方式处理前面提到的3种配置工作。但现在还是让我们先熟悉一下配置工作吧。
数据源配置
配置入口
Ralasafe不仅强调权限与业务解耦合,也强调权限数据与业务数据解耦合,独立保存。
Ralasafe数据源的入口是WEB-INF/ralasafe/datasources.xml文件,里面配置2个数据源。
-
其中1个是name=“ralasafe”的权限数据源,该数据源里面将保存权限数据。configFile属性指该权限数据源的详细配置信息,名称随意,但对应的文件必须也在WEB-INF/ralasafe目录下;
-
另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里面的表和视图。
如果,我将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】按钮,系统将开始安装用户元数据。操作过程如下图所示: <iframe id="iframe_0.8785943170114752" style="border: medium; border-image: none; width: 28px; height: 30px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.ralasafe.cn/wiki/lib/exe/fetch.php?w=600&media=%25E9%2585%258D%25E7%25BD%25AE%25E6%2589%258B%25E5%2586%258C:install_user_data.jpg&_=3208310%22%20style=%22border:none;max-width:1219px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8785943170114752',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
当用户元数据被顺利安装后,会在权限数据库生成 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>
如上配置表示:
-
用户表在app数据源下,表名称是sqlName=“UserView”;
-
name=“mainTable”是目前固定写法,不能改变,在后继版本会引入新的意义;
-
这个表的unique fields是”loginName”,如果有多个字段(如loginName,companyId)确定唯一用户,中间用逗号隔开即可。这里填写的是字 段必须在field元素里面有配置,而且填写的是field name属性值,而不是columnName属性值;
-
field元素表示用户表的字段,每个字段的数据库列字段名称是什么(columnName属性),对应的业务意义是什么(name属性);
-
其中有2个业务意义字段是必须的:id和name,分别代表用户唯一id和用户名称;
-
field的show=“true”表示该字段在页面显示,displayName属性表示该字段在页面显示名称(测试权限策略的时候,比如测试某用户查 询订单权限时,Ralasafe弹出的选择选择用户对话框,将显示show=”true”的用户字段,各个字段的title就是 displayName)。
注:
-
用户元数据配置支持数据库表和数据库视图。如果你的用户信息分散在多个表里面,你只要创建一个视图将用户各个字段统一到视图里面,然后在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;
-
如果你的用户表没有id字段,但有一个唯一字段,那么可以将该字段等同于id字段设置到id里面。如:数据列myname是唯一字段,那么id字段可以设置为<field name=“id” columnName=“myname”….
-
如果你的用户表没有id字段,同时有多个唯一字段组合,那么你应该创建视图“做出”一个逻辑id字段,然后设置到id里面。如数据列myname和companyId是唯一字段组合,可以创建视图
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的相对路径 。
相关推荐
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
labelme标注的json转mask掩码图,用于分割数据集 批量转化,生成cityscapes格式的数据集
(参考GUI)MATLAB GUI漂浮物垃圾分类检测.zip
人脸识别项目源码实战
人脸识别项目实战
本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)软件。建议采用matlab2016 Rb及以上版本打开。(若需要其他版本可联系代为转换) CSDN详情地址:https://blog.csdn.net/qq_50594161/article/details/146242453sharetype=blogdetail&sharerId=146242453&sharerefer=PC&sharesource=qq_50594161&spm=1011.2480.3001.8118
实战练习分词、创建词表、文本处理
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
人脸识别项目源码实战
学生信息管理系统是一个基于Java Web技术的综合性管理平台。通过此系统,可以实现对学生、教师、选课信息等的动态管理, 提升学校管理效率。系统采用分层架构设计,前端使用HTML、CSS,JavaScript和jQuery,后端基于Servlet,JSP和Spring框架,数据库采用MySQL。主要有四个大功能,学生管理( 增加学生信息、删除学生信息、修改学生信息、查询学生信息)、教师管理(增加教师信息、删除教师信息、修改教师信息、查询教师信息)、选课信息管理(添加选课、查询选课情况、删除选课记录)、系统管理( 登录与注册功能、 用户角色管理(老师,学生,管理员)、系统日志查看)。 技术架构 1.前端技术 HTML,CSS:静态页面布局与样式 JavaScript,jQuery:动态交互、DOM操作和AJAX请求 2.后端技术 Servlet:控制层,处理用户请求 JSP:页面动态生成 Spring:依赖注入,业务逻辑分离 3.数据库 MySQL:存储学生、教师,课程等数据 JDBC:数据库连接与操作
本课程是 PHP 进阶系列之 Swoole 入门精讲,系统讲解 Swoole 在 PHP 高性能开发中的应用,涵盖 协程、异步编程、WebSocket、TCP/UDP 通信、任务投递、定时器等核心功能。通过理论解析和实战案例相结合,帮助开发者掌握 Swoole 的基本使用方法及其在高并发场景下的应用。 适用人群: 适合 有一定 PHP 基础的开发者、希望提升后端性能优化能力的工程师,以及 对高并发、异步编程感兴趣的学习者。 能学到什么: 掌握 Swoole 基础——理解 Swoole 的核心概念,如协程、异步编程、事件驱动等。 高并发处理——学习如何使用 Swoole 构建高并发的 Web 服务器、TCP/UDP 服务器。 实战项目经验——通过案例实践,掌握 Swoole 在 WebSocket、消息队列、微服务等场景的应用。 阅读建议: 建议先掌握 PHP 基础,了解 HTTP 服务器和并发处理相关概念。学习过程中,结合 官方文档和实际项目 进行实践,加深理解,逐步提升 Swoole 开发能力。
人脸识别项目实战
人脸识别项目实战
功能简介:本工具可实现批量对照片文件的人脸识别,并按指定分辨率进行转换保存。 可为人脸识别采集系统提供很好的辅助工具。 软件基本于OPENVC开发,识别精确,转换高效。 人脸识别工具 +人脸采集处理
内容概要:本文探讨了利用肌长变化反馈控制(FCM-ML)和演员-评论家强化学习(ACRL-NGN)来有效实现人体上肢和下肢无意识姿态稳定的算法方法。通过构建一个包含949条肌肉和22个关节的全身计算模型,在不同初始姿势的情况下进行模拟试验,验证了这些方法的有效性和鲁棒性,结果显示FCM-ML方法比其他传统方法更适用于此类任务。研究指出人类及其他脊椎动物在无意识状态下,通过抗拮抗性的肌肉长度变化反馈机制来维持舒适状态下的自然身体姿势(NBP)。此外,研究还表明这种控制策略有助于机器人设计、运动员训练以及康复患者的治疗。 适用人群:生物力学、机器人学以及神经科学领域的研究人员、工程师,以及关注人体姿态控制及其应用的学者和技术人员。 使用场景及目标:①解释人和非人的脊椎动物如何在无意识情况下维持最佳姿势,特别是处于重力环境中的自然身体姿势(NBP)。②为机器人肌肉控制提供理论支持和发展方向,特别是在模拟多肌肉协调控制方面。③指导运动训练及病患恢复计划的设计与优化。 其他说明:研究发现ACRL-NGN结合FCM-ML不仅能够迅速有效地实现期望的姿态稳定性,而且不需要对肌肉分类,这使其在复
反编译apk重要的工具之一
人脸识别项目实战
FDTD复现圆偏振超透镜 ,FDTD; 复现; 圆偏振; 超透镜;,FDTD技术在超透镜复现圆偏振的实践
手势识别项目实战