天天看點

[富用戶端之Flex技術] flex UI元件權限控制架構

一.快速開始

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,則可以見到這兩個按鈕,然後執行相關操作

二.ActionScript代碼的權限控制

if(SecurityControler.isPermitted('blog_delete')) 

{

    //execute delete blog action

}

三.線上demo

  • helloworld_by_styleName 示例使用styleName添權重限保護
  • helloworld_by_interface 示例使用實作接口來添權重限保護
  • helloworld_by_annotation 示例使用annotation:  Projected來添權重限保護
  • helloworld_by_manual 示例使用手工的方式添權重限保護
  • demo源代碼位址

四.較長的描述

styleName: security(permission,controlBy)

  • permission: 權限辨別,使用者擁有該權限,才可以執行相關操作。可選參數,如果為空,則會取該comp.id作為permission
  • controlBy: 按什麼方式來控制權限,有(visible,enabled,includeInLayout,remove)。可選參數,如果為空,則取SecurityControler.start(perms,defaultControlBy)中的defaultControlBy的值,預設是visible

controlBy

按什麼方式來控制權限。

  • visible : 可見性,有權限為true,沒有權限為false
  • enabled : 激活狀态,有權限為true,沒有權限為false
  • includeInLayout : 有權限為true,沒有權限為false
  • remove : 使用removeChild()将對象從parent中remove掉,有權限不remove,沒有權限則remove
  • all : 包含前面所講的:visible,enabled,includeInLayout,但不包含remove
SecurityControler類,包含全部的主要權限控制操作:

public static function start(permissions:ArrayCollection = null,default_control_by : String = "visible"):void 

//停止權限控制 

public static function stop():void 

// 移除所有權限

public static function removeAllPerms():void

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/