欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Ralasafe/user/install with demo
Julian Wong (讨论 | 贡献) 小 (→代码集成) |
(→Demo 场景演示) |
||
(未显示2个用户的4个中间版本) | |||
第57行: | 第57行: | ||
你通过这个界面查看Ralasafe 如何实现了上述访问控制策略:[http://localhost:8080/demo/ralasafe/designer 设计器]。展开左边权限面板,点击“Query Employee”,查看其访问控制策略;点击“Loan Money”,查看其访问控制策略。 | 你通过这个界面查看Ralasafe 如何实现了上述访问控制策略:[http://localhost:8080/demo/ralasafe/designer 设计器]。展开左边权限面板,点击“Query Employee”,查看其访问控制策略;点击“Loan Money”,查看其访问控制策略。 | ||
− | + | 细心的朋友会发现Ralasafe Demo在其他几个地方也用到了访问控制: | |
# 员工查询界面的机构下拉框,不同人登录的时候显示登录用户所在机构; | # 员工查询界面的机构下拉框,不同人登录的时候显示登录用户所在机构; | ||
第72行: | 第72行: | ||
# 当用户输入用户名、密码后,验证用户名、密码。如果匹配,转到菜单显示页面;否则继续转到登录页面。 | # 当用户输入用户名、密码后,验证用户名、密码。如果匹配,转到菜单显示页面;否则继续转到登录页面。 | ||
− | 完成这些工作,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即可。具体参数意义查看 | + | 完成这些工作,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会自动与后台用户表记录进行比对,如果匹配,登录成功,继续提交执行;否则,返回到登录页面。 | LoginFilter会对用户访问的路径(该路径在web.xml配置的url-pattern规则内)进行过滤,如果用户没有登录,转到登录页面;否则继续。在登录页面的时候,当用户输入用户名、密码后,LoginFilter会自动与后台用户表记录进行比对,如果匹配,登录成功,继续提交执行;否则,返回到登录页面。 | ||
第82行: | 第82行: | ||
UrlAclFilter基本工作原理是:对当前URL与权限表的url字段进行比对,不仅比对路径,如果有参数(形如xxx?oper=add),还比对参数。如果有匹配上的,说明当前访问url需要进行权限验证。此时UrlAclFilter会安装用户角色权限关系进行验证;如果没有匹配上,说明当前url无需进行url权限验证。 | 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行代码: | 我们先看${unzip_dir}/src/org/ralasafe/demo/EmployeeServlet.java,第84,85行代码: | ||
− | + | <source lang=java> | |
Collection employees = WebRalasafe.query(req, Privilege.QUERY_EMPLOYEE); | Collection employees = WebRalasafe.query(req, Privilege.QUERY_EMPLOYEE); | ||
req.setAttribute("employees", employees); | 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,相关显示员工代码如下: | ||
+ | |||
[[Category:Ralasafe]] | [[Category:Ralasafe]] |
2011年6月13日 (一) 14:37的最后版本
安装 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,相关显示员工代码如下: