[發明專利]基于SQL的數據權限控制方法在審
| 申請號: | 201410853256.7 | 申請日: | 2014-12-31 |
| 公開(公告)號: | CN104484621A | 公開(公告)日: | 2015-04-01 |
| 發明(設計)人: | 王文鋒 | 申請(專利權)人: | 中博信息技術研究院有限公司 |
| 主分類號: | G06F21/62 | 分類號: | G06F21/62;G06F17/30 |
| 代理公司: | 北京同輝知識產權代理事務所(普通合伙) 11357 | 代理人: | 張素紅;劉洪勛 |
| 地址: | 210012 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 sql 數據 權限 控制 方法 | ||
技術領域
本發明涉及一種控制方法,尤其是一種基于SQL的數據權限控制方法。
背景技術
在ERP系統中,每個用戶對數據的訪問范圍是不同的。比如:一個主要做工程項目的公司中,總經理可以查看到整個公司的項目數據,部門負責人只能查看本部門的項目數據,而分管領導可以查看某一類型的項目數據,財務負責人可以查看全公司或者指定負責的某幾個部門的項目數據,項目經理只能查看自己負責的項目數據...等。不同角色使用系統,所能訪問的數據范圍,我們稱為數據權限。
傳統的ERP系統為了滿足不同角色范圍的數據范圍不同,需要開發不同的功能點。比如:總經理項目查詢,部門項目查詢,項目經理項目查詢...等。或者做一些特別的配置表,配置某個人/角色對項目數據的訪問范圍。比如:分管領導A可以訪問零購類型的項目,分管領導B可以訪問實施維護類型的項目,財務負責人C可以訪問部門1和部門2的項目,財務負責人D可以訪問部門3、部門4、部門5的項目...等。
有鑒于此,特提出本發明。
發明內容
本發明的目的是提供一種既不需要為不同角色開發多個類似的功能點,
也不需要為了某個數據維護一套數據權限配置表從而使開發人員在編寫SQL時無需關心數據權限的基于SQL的數據權限控制方法。
為解決上述技術問題,本發明采用技術方案的基本構思是:
一種基于SQL的數據權限控制方法,包括以下步驟:
步驟1:將SQL語句解析出需要進行數據權限控制的數據表;
步驟2:根據預定控制規則和當前登錄用戶的信息,將解析出的數據表的表名轉換為子查詢SQL;
步驟3:替換原始SQL中對應的數據表的表名為子查詢SQL,并結合解析出的數據表的位置得出最終帶有權限的SQL語句。
優選地,所述步驟1包括以下子步驟:
步驟11:判斷原始的SQL語句中是否存在單、雙引號引起來的字符串;
步驟111:若存在,則將原始的SQL語句中單、雙引號中的內容使用空格替換,進入步驟12;
步驟112:若不存在,進入步驟12;
步驟12:判斷原始的SQL語句是否都是大寫的;
步驟121:若全是大寫的,進入步驟13;
步驟122:若不全是大寫的,則將其轉換為大寫,進入步驟13;
步驟13:確定子句中關鍵字“FROM”、“WHERE”的位置;
步驟14:將“FROM”和“WHERE”位置之間的子句提取出來;
步驟15:將所有的“FROM”和“WHERE”位置之間的子句前后加上逗號,遍歷這些子句,將在逗號后且空格前的部分或者是在“JOIN”關鍵字后且空格前的部分作為數據表名,并記錄該數據表的位置。
優選地,所述步驟13中如果沒有“FROM”,則視“SELECT”關鍵字的位置為“FROM”的位置;如果沒有“WHERE”,則視最末位為“WHERE”的位置。
優選地,步驟13中使用indexOf函數確定子句中關鍵字“FROM”、“WHERE”的位置。
優選地,所述步驟2包括以下子步驟:
步驟21:將解析出的數據表的表名與所述預定控制規則匹配:
對于沒有匹配的控制規則的,執行步驟22:子查詢SQL直接使用該表名;
對于有匹配的控制規則的,執行步驟23:將用戶信息代入所述預定控制規則的適用條件中,判斷適用條件是否成立:
步驟24:對于適用條件成立的控制規則,將控制規則中的SQL條件用控制規則的分組標記連接起來;
步驟25:將上述用分組標記連接起來的SQL條件串轉換成表名的子查詢SQL。
本發明的有益效果為:本發明與現有技術相比,既不需要為不同角色開發多個類似的功能點,也不需要為了某個數據維護一套數據權限配置表,通過該方法可以達到對任何數據表都能配置出所需的訪問權限。開發人員在編寫SQL時無需關心數據權限。減少了開發的工作量。并且對于數據權限的變更也能通過改變控制規則來實現,能快速響應客戶對于數據權限變更的要求。
附圖說明
圖1為本發明的流程圖;
圖2為一個控制規則圖;
圖3為一個用戶信息圖表。
具體實施方式
為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和具體實施方式對本發明作進一步的詳細說明。
參照圖1,本發明是一種基于SQL的數據權限控制方法,包括以下步驟:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中博信息技術研究院有限公司,未經中博信息技術研究院有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410853256.7/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





