欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Ralasafe/user/hello world
(→Ralasafe功能) |
(→查询权限) |
||
(未显示1个用户的1个中间版本) | |||
第16行: | 第16行: | ||
org.ralasafe.Ralasafe.query(int privilegeId, User user, java.util.Map context); | org.ralasafe.Ralasafe.query(int privilegeId, User user, java.util.Map context); | ||
</pre> | </pre> | ||
+ | |||
+ | 通过API告诉Ralasafe当前是谁(User user),打算进行什么操作(int privilegeId,也相当于请求查询什么数据)。API本身并不包含任何权限信息。这种层级查询权限,交由Ralasafe设计器解决。Ralasafe设计器设计权限策略。当应用程序调用Ralasafe API的时候,将由Ralasafe专业引擎解析权限策略,并进行数据库查询,返回查询结果。以下是该场景设计权限策略: | ||
+ | |||
+ | [插入图片] | ||
+ | |||
+ | Ralasafe同时还提供了分页查询和自定义查询API。 | ||
+ | |||
+ | <pre> | ||
+ | package org.ralasafe; | ||
+ | |||
+ | |||
+ | |||
+ | import org.ralasafe.entitle.QueryResult; | ||
+ | |||
+ | ... | ||
+ | |||
+ | public class Ralasafe { | ||
+ | |||
+ | //分页查询 | ||
+ | |||
+ | public static QueryResult query(int privilegeId, User user, java.util.Map context, int first, int max); | ||
+ | |||
+ | //自定义条件查询 | ||
+ | |||
+ | public static QueryResult query(int privilegeId, User user, java.util.Map context, | ||
+ | |||
+ | CustomizedWhere where); | ||
+ | |||
+ | //自定义条件并分页查询 | ||
+ | |||
+ | public static QueryResult query(int privilegeId, User user, java.util.Map context, | ||
+ | |||
+ | CustomizedWhere where, int first, int max); | ||
+ | |||
+ | } | ||
+ | |||
+ | ... | ||
+ | |||
+ | package org.ralasafe.entitle; | ||
+ | |||
+ | public class QueryResult { | ||
+ | |||
+ | //查询结果记录数 | ||
+ | |||
+ | public int getTotalCount(); | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ==决策权限== | ||
+ | 场景举例:ATM机取款每次取款额不能超过¥5000,每天取款总额不能超过¥20000。 | ||
+ | Ralasafe的决策API,可以满足以上场景: | ||
+ | <pre> | ||
+ | //返回Decision对象,通过Decision.isPermit()获知是否有操作权限; | ||
+ | |||
+ | // 通过Decision.getDenyReason()获知拒绝理由 | ||
+ | |||
+ | org.ralasafe.Ralasafe.permit(int privilegeId, User user, | ||
+ | |||
+ | java.lang.Object businessData, java.util.Map context); | ||
+ | </pre> | ||
+ | |||
+ | 通过API告诉Ralasafe当前是谁(User user),打算进行什么操作(int privilegeId),操作数据是什么(Object businessData)。API本身并不包含任何权限信息。这种决策权限,交由Ralasafe设计器解决。Ralasafe设计器设计权限策略。当应用程序调用Ralasafe API的时候,将由Ralasafe专业引擎解析权限策略,并返回决策结果。以下是该场景设计权限策略: | ||
+ | |||
+ | [图片] | ||
+ | |||
+ | ==小结== | ||
+ | Ralasafe的API非常简洁易懂,而且Ralasafe的图形界面设计出的权限策略,也非常简洁易懂。这样不仅有助于开发人员集成Ralasafe,而且有助于向客户说明系统安全状况到底如何。 | ||
+ | |||
+ | Ralasafe的图形设计,不仅减少了很多开发工作量;在权限需求发生变动的时候,有助于快速更改。 | ||
+ | |||
+ | |||
+ | |||
+ | [[Category:Ralasafe]] |
2011年6月12日 (日) 15:41的最后版本
目录 |
[编辑] Ralasafe功能
从某种意义来说,Ralasafe给权限管理领域带来一种全新思考。它是从业务功能角度出发,并非从编程角度出发;提供最简单实用的API,供开发人员集成到业务系统,将复杂的权限逻辑全部交给Ralasafe;并非提供某种强大而又神奇的模板,或者某些强大而又神奇的权限设置界面。
通过API调用和Ralasafe设计器设计工作,减少很多编程工作。Ralasafe提供的界面完全面向开发人员和IT管理员,因此开发人员还需要为业务系统编写“权限管理”相关界面。(仅仅是界面,不需要在各处业务应用做权限逻辑验证等开发工作)
[编辑] 查询权限
场景举例:总公司用户查询所有员工;北京分公司用户只能查询北京分公司及下属子公司员工;海淀营业部用户只能查询海淀营业部员工。
Ralasafe的查询API,可以满足以上场景:
//返回QueryResult对象, //通过QueryResult.getData()获取查询值Collectio<定制的ViewObject/Javabean> org.ralasafe.Ralasafe.query(int privilegeId, User user, java.util.Map context);
通过API告诉Ralasafe当前是谁(User user),打算进行什么操作(int privilegeId,也相当于请求查询什么数据)。API本身并不包含任何权限信息。这种层级查询权限,交由Ralasafe设计器解决。Ralasafe设计器设计权限策略。当应用程序调用Ralasafe API的时候,将由Ralasafe专业引擎解析权限策略,并进行数据库查询,返回查询结果。以下是该场景设计权限策略:
[插入图片]
Ralasafe同时还提供了分页查询和自定义查询API。
package org.ralasafe; import org.ralasafe.entitle.QueryResult; ... public class Ralasafe { //分页查询 public static QueryResult query(int privilegeId, User user, java.util.Map context, int first, int max); //自定义条件查询 public static QueryResult query(int privilegeId, User user, java.util.Map context, CustomizedWhere where); //自定义条件并分页查询 public static QueryResult query(int privilegeId, User user, java.util.Map context, CustomizedWhere where, int first, int max); } ... package org.ralasafe.entitle; public class QueryResult { //查询结果记录数 public int getTotalCount(); }
[编辑] 决策权限
场景举例:ATM机取款每次取款额不能超过¥5000,每天取款总额不能超过¥20000。 Ralasafe的决策API,可以满足以上场景:
//返回Decision对象,通过Decision.isPermit()获知是否有操作权限; // 通过Decision.getDenyReason()获知拒绝理由 org.ralasafe.Ralasafe.permit(int privilegeId, User user, java.lang.Object businessData, java.util.Map context);
通过API告诉Ralasafe当前是谁(User user),打算进行什么操作(int privilegeId),操作数据是什么(Object businessData)。API本身并不包含任何权限信息。这种决策权限,交由Ralasafe设计器解决。Ralasafe设计器设计权限策略。当应用程序调用Ralasafe API的时候,将由Ralasafe专业引擎解析权限策略,并返回决策结果。以下是该场景设计权限策略:
[图片]
[编辑] 小结
Ralasafe的API非常简洁易懂,而且Ralasafe的图形界面设计出的权限策略,也非常简洁易懂。这样不仅有助于开发人员集成Ralasafe,而且有助于向客户说明系统安全状况到底如何。
Ralasafe的图形设计,不仅减少了很多开发工作量;在权限需求发生变动的时候,有助于快速更改。