badqiu

XPer
随笔 - 46, 文章 - 3, 评论 - 195, 引用 - 0
数据加载中……

Flex flex企业级UI权限控制

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

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

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

一.快速开始

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

2) 启动权限控制

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

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

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

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

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

 

二.ActionScript代码的权限控制

 

if(SecurityControler.isPermitted('blog_delete')) 
{
    //execute delete blog action
}

 

三.在线demo

 

 

四.详细描述

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类,包含全部的主要权限控制操作

/**
* 启动权限控制
* permissions: 字符串列表,为拥有的权限
* default_control_by: 按那种方式控制权限,可选值: visible,enabled,remove,includeInLayout
*/
public static function start(permissions:ArrayCollection = null,default_control_by : String = "visible"):void 

//停止权限控制 
public static function stop():void 

// 移除所有权限
public static function removeAllPerms():void
/**
* 更新拥有的权限
* perms: 字符串列表,用户拥有的权限
*/ 
public static function updatePerms(perms:ArrayCollection):void 

//增加一条权限 
public static function addPerm(permName:String):void

// 减少一条权限
public static function removePerm(permName:String):void

// 判断是否拥有权限
//示例: if(SecurityControler.isPermitted('blog_delete')) { do some thing} 
public static function isPermitted(perm:String):boolean

 

项目地址: http://code.google.com/p/flex-security/

posted on 2010-02-25 17:32 badqiu 阅读(3141) 评论(2)  编辑  收藏

评论

# re: Flex flex企业级UI权限控制  回复  更多评论   

很感谢楼主的努力,但是我按照你说的运行程序,权限一点都不起作用。
2010-03-05 09:05 | hjn

# re: Flex flex企业级UI权限控制[未登录]  回复  更多评论   

请自己查看demo
2010-03-05 12:12 | badqiu

只有注册用户登录后才能发表评论。


网站导航: