保护你的应用程序
by Si Chen
OFBIZ可以在用户接口层或业务逻辑层实现安全性保障。在用户接口层,整个WEB应用程序可以被一次性保护,控制器中单个的请求可以被保护,并且单个的页面可以需要特定的权限。在业务逻辑层,每一个服务可以需要特定的权限。
分配权限
有一个名叫SecurityPermission的实体描述了粒状的安全权限,这些权限可以用于特定的页面或特定的服务。SecurityPermission是一个两部分的字符串,由”_”分开,第一部分指定了应用程序,第二部分指定了允许的操作。这样的话你就有可能会拥有像"ORDERMGR_CREATE"的权限,它意味着拥有该权限的用户可以在订单管理应用程序里创建信息。有一些权限以_ADMIN结尾,比如ORDERMGR_ADMIN,这些权限自动拥有对应用程序的所有操作权限。
许多单个的安全权限通过实体SecurityPermissionGroup可以被组织到一起。例如,你可以为特定客户创建一组权限,指定谁可以察看客户信息,进入订单,但是不能创建购买订单或者访问内部产品,账户,或者薪水信息和其它功能。
每一个SecurityPermissionGroup都和一个UserLogin关联。一个Party(或许是一个人,或许是一个组织)可以被关联多个UserLogins。这样的话一个人就可以有多个Login,一些Login拥有的权限多一些,一些Login拥有的权限少一些,这样对于大客户是很有用的。这可以在Party Manager的安全tab中操作。
保护WEB应用程序
在ofbiz-component.xml文件中定义web应用程序位置处(<web app>标签处),你可以使用<base-tag>标签来指定整个web应用程序需要的权限。仅使用安全权限字符串的第一部分,即应用程序的名字。例如,如果你使用base-permission="ORDERMGR",则web应用程序会自动需要ORDERMGR_VIEW或ORDERMGR_ADMIN。
在许多应用程序中,你会看到base-permission="OFBTOOLS, ORDERMGR",这句话表示了权限OFBTOOLS_VIEW和ORDERMGR_VIEW。base -permission属性允许指定一系列的权限,并且它们必须是真实的同时用户是可以获得访问的。OFBTOOLS_VIEW和 ORDERMGR_VIEW的含义是:OFBTOOLS_VIEW控制了访问对于web应用程序的访问,而ORDERMGR_VIEW可用于控制任何应用程序中订单信息的访问,包括基于web的订单管理,POS,CRM模块或其它应用程序。
在web应用程序的controller.xml中,我们可以用<security>标签为单个的request指定安全性需求。你可以使用<security>标签来实现页面的安全性,可以通过使用https,或者需要一个用户login来访问页面(尽管没有为一个用户login指定特殊的权限)。你也可以通过指定无法从浏览器中定向request来隐藏request,这对于收到了一个request链中的一个不能被单独调用的request的情况是很有效的。
最后,在页面本身你可以使用request,这在页面上是不显示的除非用户login有一定的安全性权限。OFBIZ在一个.bsh文件中使用UserLogin和一个 "security" 对象来检查这些权限。如果你使用widget你还可以使用如下的标签:
引用
<condition>
<if-has-permission>
<check-permission>
<widgets>
<fail-widgets>
OFBIZ允许我们直接在widget里核查权限而不是使用FTL,并设置了一个通过核查时的widget和没有通过核查的widget.
安全性API
The most popular security API methods are: 以下是最常用的安全性API方法:
* Security.hasPermission -核查该用户是否具备一个特定的权限。
* Security.hasEntityPermission - 允许你指定权限字符串,字符串有两部分,如"ORDERMGR", "_CREATE",所以,如果用户有"ORDERMGR_CREATE" 或 "ORDERMGR_ADMIN"权限,它将会通过。
* ServiceUtil.getPartyIdCheckSecurity -核查是否用户具备指定的权限,或者实际上是执行自己的操作。只要是任何情况中的一种,该方法都会返回partyId,意味着用户有权限。
* Security.hasRolePermission -核查是否用户具备指定的权限,以及是否用户关联一个角色中特殊的实体。意思是如果你给用户一个权限,比如ORDER_ROLE_VIEW,并且指定他通过实体OrderRole和一个订单关联,这样的话那个用户就有权限察看特定的订单。相同的用户将不会拥有权限查看订单,如果他没有一个OrderRole实体记录的话。
The minilang simple methods also have permission checking tags <if-has-permission> and <check-permission>. Minilang脚本也有可以进行权限核查的标签:<if-has-permission> 和<check-permission>。
安全性服务
你可以定义是否一个服务需要一个用户login。此外,你可以使用<security>标签来定义什么权限是需要的。在服务内部,你可以为自己核查权限。有一个安全性相关的方法可以用于核查是否UserLogin拥有某种权限,或者是否用户为自己执行一个任务(比如为自己创建订单)。
你也可以在services.xml里是用<required-permissions> 和<check-permission>标签定义你的权限,
http://blog.sina.com.cn/s/blog_4a4820f9010008vi.html
分享到:
相关推荐
搞ofbiz或者opentaps二次开发的朋友可以看看,中文技术文档,比较详细的
经典的ofbiz开发技术文档!本书详细介绍了ofbiz的应用架构、部署及如何开发和配置自己的应用。ofbiz文档不多本书绝对是不可多得的ofbiz技术文档!!!
OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门
OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps widget使用说明.rar OFBiz.Development.2008.rar Groovy中文教程.rar freemarker中文手册.rar ofbiz10.04表结构.rar ...
都需要的部件,像用户认证、工作流、商务规则处理等,Ofbiz 的核心技术在于 Entity Engine,其他的组件基本都 是基于它的。简单来说 Entity Engine 的主要功能是将数据库表创建、对象与数据表的映射、对象的查询等做...
关于OFBIZ很全的介绍包括他的事物与JMS。。。
ofbiz 官网文档翻译 ,按照此文档里面的步骤,可以安全快速的编译自己的第一个小模块 "Hello World",一开始是很抵触的,但是学着学着发现其实框架道理是相似的,为了将代码解耦,每个框架都有自己的独特解耦之道和...
技术文档 5 第一部分、ofbiz表现 5 一、理解MVC模式 5 1、MVC理论描述 5 2、系统设计 6 3、OFBiz中MVC模式体现 7 二、JPublish合成表示层 8 1、经典的合成器--JPublish 8 2、template + script 9 3、JPublish和MVC 9...
关于ofbiz的资料,很多,用ofbiz技术的朋友们赶快下载吧
ofbiz10.04表结构(包含自己翻译),以前发现网上很难找,自己分享下
自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,自学整理的ofbiz学习笔记,适合初学者,可以下个看看
OFBiz集成Spring和Activiti,详细设计说明书。ofbiz版本12.04
ofbiz的获取与部署,主要用到了gradle 和 eclipse,注意:cmd部署时,需要一个较好的网络环境以下载gradle
ofbiz jar file, some jars for ofbiz
OFBiz开发者装备系列:0007
ofbiz 数据模型 中文手册 ofbiz 核心的数据模型 表结构和字段翻译
ofbiz数据结构
ofbiz sql 表结构
浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc浅谈OFBIZ.doc
OFBIZ开发指南 英文2OFBIZ开发指南 英文2OFBIZ开发指南 英文2