天天看点

Flex企业级UI权限控制

http://www.pin5i.com/showtopic-26835.html

网上 搜索了一番,用于控制flex  UI 组件的 权限的 框架只有 chimp相近一些. 

但是不喜欢他的基于flex annotation的权限控制方式.遂决定自己写一套flex权限控制框架。

如果你熟悉作者的另外一套javascript 表单 验证框架 rapid-validation,将会对下面的使用方式有似曾相识的感觉。(文/ badqiu)

一.快速开始

1) 下载并添加flex_security.swf在你的flex libs中

2) 启动权限控制

  1. //启动权限控制,permissions为用户拥有的权限字符串列表
  2. SecurityControler.start(permissions,'visible');

复制代码 3) 通过增加styleName=security(permission,controlBy)为你的按钮增加权限控制

  1. <mx:Button label="new user" styleName="security(user_new)" />
  2. <mx:Button label="update user" styleName="security(user_update)"/>

复制代码 如上,如果用户拥有这两个权限(permissions):user_new,user_update,则可以见到这两个按钮,然后执行相关操作

注意:如果你不喜欢styleName添加权限保护,还有其它方式:如实现 接口,编程方式增加,请查看后面的demo

二.ActionScript代码的权限控制

  1. if(SecurityControler.isPermitted('blog_delete')) 
  2. {
  3.     //execute delete blog action
  4. }

复制代码 三.在线demo

    * helloworld_by_styleName 示例使用styleName添加权限保护

    * helloworld_by_interface 示例使用实现接口来添加权限保护

    * helloworld_by_annotation 示例使用annotation:[Projected]来添加权限保护

    * helloworld_by_manual 示例使用手工的方式添加权限保护

四.详细描述

1) styleName: security(permission,controlBy)

    * permission: 权限标识,用户拥有该权限,才可以执行相关操作。可选参数,如果为空,则会取该comp.id作为permission

    * controlBy: 按什么方式来控制权限,有(visible,enabled,includeInLayout,remove)。可选参数,如果为空,则取 SecurityControler?.start(perms,defaultControlBy)中的defaultControlBy的值,默认是 visible

2) controlBy: 按什么方式来控制权限

    * visible : 可见性,有权限为true,没有权限为false

    * enabled : 激活状态,有权限为true,没有权限为false

    * includeInLayout : 有权限为true,没有权限为false

    * remove : 使用removeChild()将对象从parent中remove掉,有权限不remove,没有权限则remove

    * all : 包含前面所讲的:visible,enabled,includeInLayout,但不包含remove

3) SecurityControler 类,包含全部的主要权限控制操作

  1. public static function start(permissions:ArrayCollection = null,default_control_by : String = "visible"):void 
  2. //停止权限控制 
  3. public static function stop():void 
  4. // 移除所有权限
  5. public static function removeAllPerms():void
  6. public static function updatePerms(perms:ArrayCollection):void 
  7. //增加一条权限 
  8. public static function addPerm(permName:String):void
  9. // 减少一条权限
  10. public static function removePerm(permName:String):void
  11. // 判断是否拥有权限
  12. //示例: if(SecurityControler.isPermitted('blog_delete')) { do some thing} 
  13. public static function isPermitted(perm:String):boolean

复制代码 代码下载: Flex企业级UI权限控制