欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Ralasafe/user/install with demo
安装 Ralasafe (with demo)
目录 |
下载
如果你是Ralasafe初学者,如果你是期望快速了解Ralasafe功能的开发者、决策者,我们建议你下载Ralasafe Demo(下载地址 。如果下载速度慢,请切换其他镜像(Mirror))。通过快速安装Ralasafe Demo应用,可以快速了解Ralasafe安装、界面及产品功能。
安装环境
Java 运行环境:Jdk 1.4以上 数据库环境:Mysql或者Oracle 9i以上 Web 服务器:Tomcat 浏览器:建议Chrome,Firefox浏览器 安装前,请确认你的安装机器有以上软件。
我们以安装到Tomcat +MYSQL环境为例进行讲解。
Ralasafe Demo安装非常简单,有:
- 复制文件;
- 修改部分配置文件——数据源和web.xml;
- 导入Demo应用数据。
三部分工作组成。
解压ralasafe_demo-${buildNumber}.zip到任意目录。以下我们以${unzip_dir}来代替。
复制文件
- 在${Tomcat_dir}/webapps下创建demo目录,
- 并将${unzip_dir}/WebContent/所有内容复制到${Tomcat_dir}/webapps/demo/目录下;
- 然后,将${unzip_dir}/xml目录复制到${Tomcat_dir}/webapps/demo目录下。(如果你使用Oracle 数据库,复制${unzip_dir/xml(oracle)到${Tomcat_dir}/webapps/demo目录下,并将xml(oracle)目录重命名为xml。)
修改部分配置文件
- 修改web.xml中repositoryDir参数值(大约在73行),将其值改为${Tomcat_dir}/webapps/demo/xml。(请使用真实地址代替${Tomcat_dir});
- 修改${Tomcat_dir}/webapps/demo/WEB-INF/ralasafe/ralasafe-db.properties,修改jdbcUser和jdbcPassword值,使用你的mysql用户名和密码;(数据库待会儿导入)
- 修改${Tomcat_dir}/webapps/demo/WEB-INF/ralasafe/app-ds.properties,修改jdbcUser和jdbcPassword值,使用你的mysql用户名和密码。(数据库待会儿导入)
导入Demo应用数据
使用Mysql GUI Tool将${unzip_dir}/sql/demo-mysql.sql导入到mysql数据库。该脚本会在mysql数据库里面创建2个新库:mydemo和ralasafe,并导入相关数据。
如果,你使用oracle数据库。那么请先创建2个用户名:mydemo和ralasafe。将${unzip_dir}/sql/demo-oracle(mydemo schema).sql 导入到mydemo schema;将${unzip_dir}/sql/demo-oracle(ralasafe schema).sql 导入到ralasafe schema。 导入后,你还要对数据源配置文件做相应修改。 ${Tomcat_dir}/webapps/demo/WEB-INF/ralasafe/ralasafe-db.properties和${Tomcat_dir}/webapps/demo/WEB-INF/ralasafe/app-ds.properties,修改jdbcDriver,jdbcUrl,jdbcUser和jdbcPassword值。
Demo 场景演示
Ralasafe Demo 演示了2个场景:
- HR系统的员工查询功能,查询需求是:
- 总公司用户可以查询所有员工;
- 分公司用户只能查询所在分公司及下属营业部员工;
- 营业部用户只能查询所在营业部员工。
- 财务系统借款功能,决策需求是:
- 每个人每次借款上限5000元;
- 每个人每天总借款额不能超过20000元。
你通过这个界面登录查看演示效果:登录,该页面登陆框下方提示有登录用户名。他们分别代表总公司用户、分公司用户和营业部用户。
你通过这个界面查看Ralasafe 如何实现了上述访问控制策略:设计器。展开左边权限面板,点击“Query Employee”,查看其访问控制策略;点击“Loan Money”,查看其访问控制策略。
细心的朋友会发现Ralasafe Demo在其他几个地方也用到了访问控制:
- 员工查询界面的机构下拉框,不同人登录的时候显示登录用户所在机构;
- 员工查询界面的员工列表后的删除链接,当员工所在机构和登录用户机构一致时,才显示了删除链接,否则没有显示。
- 借款界面的下方的借款记录,仅显示登录用户当天记录记录。
Demo集成介绍
登录控制介绍
Demo 登录控制实现了如下功能:
- 当用户没有登录时,转到登录页面;
- 当用户输入用户名、密码后,验证用户名、密码。如果匹配,转到菜单显示页面;否则继续转到登录页面。
完成这些工作,Demo 只要编写登录页面(${Tomcat_dir}/webapps/demo/ralasafe/demo/login.jsp)和登录后菜单显示页面(${Tomcat_dir}/webapps/demo/ralasafe/demo/main.jsp),其他的全部交给ralasafe自带的org.ralasafe.webFilter.LoginFilter完成。将LoginFilter配置到web.xml即可。具体参数意义查看JavaDoc。
LoginFilter会对用户访问的路径(该路径在web.xml配置的url-pattern规则内)进行过滤,如果用户没有登录,转到登录页面;否则继续。在登录页面的时候,当用户输入用户名、密码后,LoginFilter会自动与后台用户表记录进行比对,如果匹配,登录成功,继续提交执行;否则,返回到登录页面。
URL访问权限控制
Demo 没有在各个Servlet里面对URL访问权限进行判断。URL访问权限判断工作,也完全交给Ralasafe自带的org.ralasafe.webFilter.UrlAclFilter来完成。直接将其配置到web.xml即可。
UrlAclFilter基本工作原理是:对当前URL与权限表的url字段进行比对,不仅比对路径,如果有参数(形如xxx?oper=add),还比对参数。如果有匹配上的,说明当前访问url需要进行权限验证。此时UrlAclFilter会安装用户角色权限关系进行验证;如果没有匹配上,说明当前url无需进行url权限验证。
具体参数意义查看JavaDoc
代码集成
我们先看${unzip_dir}/src/org/ralasafe/demo/EmployeeServlet.java,第84,85行代码: <source lang=java> Collection employees = WebRalasafe.query(req, Privilege.QUERY_EMPLOYEE); req.setAttribute("employees", employees); </source>
调用WebRalasafe API,传入HttpRequest参数和当前操作权限ID。WebRalasafe将调用Ralasafe权限引擎,返回当前用户具有权限查看的数据,即数据级权限。开发人员不需要编写一行查询代码。Ralasafe也支持分页、条件查询、多表查询。
当前用户直接从HttpRequest.getSession()里面获取;Privilege.QUERY_EMPLOYEE是从Ralasafe Designer里面导出的常量,不需要人工编程。
返回的Collection employees是根据业务需求自定义的Java实体类。Demo 应用里是org.ralasafe.demo.Employee。
显示员工的Jsp页面${unzip_dir}/WebContent/ralasafe/demo/employee.jsp,相关显示员工代码如下: