一種基于json格式的功能操作權限控制方法
【技術領域】
[0001]本發(fā)明涉及權限控制技術領域,具體地說是一種實用性強、基于JSON格式的功能操作權限控制方法。
【背景技術】
[0002]在現有技術中,通常的權限管理是利用RBAC (Role-Based Access Control,基于角色的訪問控制),通過角色與權限進行關聯。這種權限管理技術比較全復雜,數據存儲較為麻煩,每次功能操作的權限都需要讀取數據庫表,在數據量較大或者表結構設計不清晰的情況下,會導致權限判斷效率低下。基于此,現提供一種基于JSON格式的功能操作權限控制方法,該方法通過簡單配置文件的方式來判斷權限,解決上述問題。
【發(fā)明內容】
[0003]本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、基于JSON格式的功能操作權限控制方法。
[0004]一種基于JSON格式的功能操作權限控制方法,其具體實現過程為:
首先定義每個操作權限控制所需要的條件:當用戶訪問權限時,動態(tài)讀取條件,根據內存中當前用戶的相關數據,動態(tài)的解析條件,來判斷當前有沒有此操作的權限;
當步驟a)中獲取到權限的名字,則根據此名字將對應的權限控制的數據加載到內存;將步驟b)加載到內存中的權限控制數據根據初始狀態(tài),逐條判斷每個操作的條件集是否有操作權限;
將步驟c)獲取的有操作權限的信息返回到客戶端,客戶端腳本將所有操作的信息生成為相關的按鈕,并注冊相關事件。
[0005]所述步驟c)的詳細判斷過程極為判斷每個操作的條件集是否返回true:返回true則表示有此操作權限,并將此操作的相關數據寫入到內存;當返回false時,則繼續(xù)判斷下一個操作的條件集,直到初始狀態(tài)下的所有操作都判斷完成。
[0006]當用戶操作頁面上的按鈕時,當前的操作信息返回服務器,其中包含的信息有當前操作的編號、當前操作的下一個狀態(tài);根據當前操作的下一個狀態(tài),依次判斷出接下來有權限的操作,并返回客戶端,客戶端重繪界面上的操作按鈕。
[0007]所述權限控制文件以JSON格式書寫,客戶端與服務器端對權限進行判斷時,讀取相同的文件。
[0008]本發(fā)明的一種基于JSON格式的功能操作權限控制方法,具有以下優(yōu)點:
本發(fā)明提出的一種基于JSON格式的功能操作權限控制方法為.Net環(huán)境下實現操作權限驗證的方法,有利于開發(fā)人員進行快速的開發(fā),Web端與Server端可以同時解析同一份配置文件,而不需要做任何修改,達到統(tǒng)一性;本發(fā)明面向開發(fā)人員,可快速的判斷權限,不需要動態(tài)的讀取數據庫,利用配置文件,完成權限的可配置,實用性強,易于推廣。
【具體實施方式】
[0009]下面對本發(fā)明作進一步說明。
[0010]本發(fā)明公開了一種基于JSON格式的功能操作權限控制方法,其具體實現過程為: 首先定義每個操作權限控制所需要的條件:當用戶訪問權限時,動態(tài)讀取條件,根據內存中當前用戶的相關數據,動態(tài)的解析條件,來判斷當前有沒有此操作的權限;
當步驟a)中獲取到權限的名字,則根據此名字將對應的權限控制的數據加載到內存;將步驟b)加載到內存中的權限控制數據根據初始狀態(tài),逐條判斷每個操作的條件集是否有操作權限;
將步驟c)獲取的有操作權限的信息返回到客戶端,客戶端腳本將所有操作的信息生成為相關的按鈕,并注冊相關事件。
[0011]所述步驟c)的詳細判斷過程極為判斷每個操作的條件集是否返回true:返回true則表示有此操作權限,并將此操作的相關數據寫入到內存;當返回false時,則繼續(xù)判斷下一個操作的條件集,直到初始狀態(tài)下的所有操作都判斷完成。
[0012]當用戶操作頁面上的按鈕時,當前的操作信息返回服務器,其中包含的信息有當前操作的編號、當前操作的下一個狀態(tài);根據當前操作的下一個狀態(tài),依次判斷出接下來有權限的操作,并返回客戶端,客戶端重繪界面上的操作按鈕。
[0013]此外,可以在客戶端直接請求到權限控制文件,此過程涉及到數據的加密解密。然后將權限控制的判斷在客戶端進行判斷,判斷方法與上述步驟相同。
[0014]所述權限控制文件以JSON格式書寫,客戶端與服務器端對權限進行判斷時,讀取相同的文件。
[0015]實施例:
權限定義的JSON數據如下所述。
[0016]{
’ SM_CommonFuncMgr’: {
’ Start’: [{
’Condit1n’: ’ (vars.State==O vars.State==4) &&vars.RefState〈5’,
’ Act1n’: ’ add’ ,
’ Name’: ’ 新增’,
'NextState': ' Start',
'Group': ' I'
},{
’Condit1n’: ’ (vars.State==O vars.State==4) &&vars.RefState〈5’,
’ Act1n’: ’ removeTarget’,
’Name’: ’刪除’,
'NextState': ' Start',
'Group': ' I'
},{ ’ Condit1n’: ’ (vars.State==O| |vars.State==4)&&vars.RefState〈5,,
’ Act1n’: ’ upRow',
’ Name’: ’ 上移’,
’ NextState1: ’ Start’,
’ Group': ’ 2,
I, {
’ Condit1n’: ’ (vars.State==O| |vars.State==4)&&vars.RefState〈5,,
’ Act1n’: ’ downRow',
’ Name’: ’ 下移’,
’ NextState1: ’ Start’,
’ Group': ’ 2,
},{
’ Condit1n’: ’ (vars.State<6)&&vars.RefState<5&&vars.State!=2&& vars.ScoreState!=〃2〃’,
’ Act1n’: ’ SaveDatai,
’ Name’: ’ 保存’,
’ NextState1: ’ Start’,
y /-λy ,
Group: ?
},{
’ Condit1n’: ’ (vars.State==O| |vars.State==4)&&vars.RefState〈5,,
’ Act1n’: ’ submit’,
’ Name’: ’提交審批’,
’ NextState1: ’ Start’,
y /-λy ,
Group: ?
}
}o
[0017]讀取JSON文件,傳入當前相關數據判斷每個操作的Condit1n是否為true,相關代碼如下:
a) Web 端。
[0018](stateObj.Condit1n===,,|| ^ra7(state0bj.Condit1n)) {
buttonlnfos.push ({
ButtonName: stateObj.Name,
ButtonAct1n: stateObj.Act1n,
Order: ’ ’,
Group: stateObj.Group
I); }o
[0019]b) Server 端。
[0020]dynamic obj = JsonConvert.DeserializeObject (smString);if (currentAct1n.Length == 0)
{
foreach (dynamic state in obj [currentState])
{
string condit1n = Convert.ToString(state[^Condit1nal.Value);
bool isButtonShow = false;
if (!string.1sNullOrWhiteSpace(condit1n))
{
var reg = new TypeRegistry();reg.RegisterSymbol (〃vars〃,arg);
var p = new CompiledExpress1n(condit1n) { TypeRegistry = reg
};
if (p.Eval ().ToString () == Boolean.TrueString)
{
isButtonShow = true;
}
}
Else
{
isButtonShow = true;
}
if (isButtonShow)
{
buttonlnfos.Add (new PFButtonInfo () {
ButtonAct1n = Convert.ToString(state[〃Act1n〃].Value), ButtonName = Convert.ToString(state[〃Name〃].Value),
Group = Convert.ToString(state[〃Group〃].Value)
I);
}
}
}o
[0021]上述【具體實施方式】僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述【具體實施方式】,任何符合本發(fā)明的一種基于JSON格式的功能操作權限控制方法的權利要求書的且任何所述技術領域的普通技術人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。
【主權項】
1.一種基于JSON格式的功能操作權限控制方法,其特征在于,其具體實現過程為: a)首先定義每個操作權限控制所需要的條件:當用戶訪問權限時,動態(tài)讀取條件,根據內存中當前用戶的相關數據,動態(tài)的解析條件,來判斷當前有沒有此操作的權限; b)當步驟a)中獲取到權限的名字,則根據此名字將對應的權限控制的數據加載到內存; c )將步驟b )加載到內存中的權限控制數據根據初始狀態(tài),逐條判斷每個操作的條件集是否有操作權限; d)將步驟C)獲取的有操作權限的信息返回到客戶端,客戶端腳本將所有操作的信息生成為相關的按鈕,并注冊相關事件。
2.根據權利要求1所述的一種基于JSON格式的功能操作權限控制方法,其特征在于,所述步驟c)的詳細判斷過程極為判斷每個操作的條件集是否返回true:返回true則表示有此操作權限,并將此操作的相關數據寫入到內存;當返回false時,則繼續(xù)判斷下一個操作的條件集,直到初始狀態(tài)下的所有操作都判斷完成。
3.根據權利要求2所述的一種基于JSON格式的功能操作權限控制方法,其特征在于,當用戶操作頁面上的按鈕時,當前的操作信息返回服務器,其中包含的信息有當前操作的編號、當前操作的下一個狀態(tài);根據當前操作的下一個狀態(tài),依次判斷出接下來有權限的操作,并返回客戶端,客戶端重繪界面上的操作按鈕。
4.根據權利要求2所述的一種基于JSON格式的功能操作權限控制方法,其特征在于,所述權限控制文件以JSON格式書寫,客戶端與服務器端對權限進行判斷時,讀取相同的文件。
【專利摘要】本發(fā)明公開了一種基于JSON格式的功能操作權限控制方法,其具體實現過程為:a)首先定義每個操作權限控制所需要的條件;b)當步驟a)中獲取到權限的名字,則根據此名字將對應的權限控制的數據加載到內存;c)將步驟b)加載到內存中的權限控制數據根據初始狀態(tài),逐條判斷每個操作的條件集是否有操作權限;d)將步驟c)獲取的有操作權限的信息返回到客戶端,客戶端腳本將所有操作的信息生成為相關的按鈕,并注冊相關事件。該一種基于JSON格式的功能操作權限控制方法與現有技術相比,解決Web端與Server端通過內存中數據對用戶操作權限的驗證一致問題,并且不需要寫太多驗證邏輯,通過可配置的方式實現對操作權限的控制。
【IPC分類】G06F21-30, G06F21-62
【公開號】CN104732123
【申請?zhí)枴緾N201510129172
【發(fā)明人】劉元方, 徐強, 楊浩, 杜曉東
【申請人】浪潮集團有限公司
【公開日】2015年6月24日
【申請日】2015年3月24日