欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Ralasafe/user/install with demo
小 |
Julian Wong (讨论 | 贡献) |
||
第1行: | 第1行: | ||
− | 安装 [[Ralasafe]] (with demo) | + | =安装 [[Ralasafe]] (with demo)= |
+ | |||
+ | ==下载== | ||
+ | 如果你是Ralasafe初学者,如果你是期望快速了解Ralasafe功能的开发者、决策者,我们建议你下载Ralasafe Demo([http://sourceforge.net/projects/ralasafe/files/1.0-v20101009/ralasafe_demo-1.0-v20101009.zip/download 下载地址] | ||
+ | 。如果下载速度慢,请切换其他镜像(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)到${Tomcatd_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元。 | ||
+ | |||
+ | 你通过这个界面登录查看演示效果:[[http://localhost:8080/demo/ralasafe/demo/login.jsp]],该页面登陆框下方提示有登录用户名。他们分别代表总公司用户、分公司用户和营业部用户。 | ||
+ | |||
+ | 你通过这个界面查看Ralasafe 如何实现了上述访问控制策略:[[http://localhost:8080/demo/ralasafe/designer]]。展开左边权限面板,点击“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即可。具体参数意义查看[[http://www.ralasafe.org/zh/guide/reference/javadoc/org/ralasafe/webFilter/LoginFilter.html 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权限验证。 | ||
+ | |||
+ | 具体参数意义查看[[http://www.ralasafe.org/zh/guide/reference/javadoc/org/ralasafe/webFilter/UrlAclFilter.html JavaDoc]] | ||
+ | |||
+ | === 代码集成 === | ||
+ | |||
+ | 我们先看${unzip_dir}/src/org/ralasafe/demo/EmployeeServlet.java,第84,85行代码: | ||
+ | |||
+ | <pre><tt><span style="color: #000000;">1:</span> <span style="color: #008080;">Collection</span> employees <span style="color: #990000;">=</span> WebRalasafe<span style="color: #990000;">.</span><strong><span style="color: #000000;">query</span></strong><span style="color: #990000;">(</span>req<span style="color: #990000;">,</span> Privilege<span style="color: #990000;">.</span>QUERY_EMPLOYEE<span style="color: #990000;">);</span> | ||
+ | <span style="color: #000000;">2:</span> req<span style="color: #990000;">.</span><strong><span style="color: #000000;">setAttribute</span></strong><span style="color: #990000;">(</span><span style="color: #ff0000;">&quot;employees&quot;</span><span style="color: #990000;">,</span> employees<span style="color: #990000;">);</span></tt></pre> | ||
+ | |||
+ | 调用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,相关显示员工代码如下: | ||
[[Category:Ralasafe]] | [[Category:Ralasafe]] |
2011年5月28日 (六) 14:51的版本
目录 |
安装 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)到${Tomcatd_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元。
你通过这个界面登录查看演示效果:[[1]],该页面登陆框下方提示有登录用户名。他们分别代表总公司用户、分公司用户和营业部用户。
你通过这个界面查看Ralasafe 如何实现了上述访问控制策略:[[2]]。展开左边权限面板,点击“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行代码:
<tt><span style="color: #000000;">1:</span> <span style="color: #008080;">Collection</span> employees <span style="color: #990000;">=</span> WebRalasafe<span style="color: #990000;">.</span><strong><span style="color: #000000;">query</span></strong><span style="color: #990000;">(</span>req<span style="color: #990000;">,</span> Privilege<span style="color: #990000;">.</span>QUERY_EMPLOYEE<span style="color: #990000;">);</span> <span style="color: #000000;">2:</span> req<span style="color: #990000;">.</span><strong><span style="color: #000000;">setAttribute</span></strong><span style="color: #990000;">(</span><span style="color: #ff0000;">"employees"</span><span style="color: #990000;">,</span> employees<span style="color: #990000;">);</span></tt>
调用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,相关显示员工代码如下: