權限系統(tǒng)_數(shù)據(jù)權限控制

1后雷、使用 query filter

先舉例說明一下數(shù)據(jù)權限迷扇,假設一個工作任務應用有以下的需求:

普通員工可以查看自己的工作項
部門經(jīng)理可以查看自己管理部門的所有工作項
對于普通員工和部門經(jīng)理狮杨,他們訪問應用的入口都是相同的,應用需要根據(jù)不同的角色返回不一樣的數(shù)據(jù)結果,這就是數(shù)據(jù)權限控制。

數(shù)據(jù)權限是個比較復雜的問題般婆,規(guī)則非常靈活,在Leap中并沒有內置實現(xiàn)眨八,但提供了一個基礎機制腺兴,可以相對簡單的實現(xiàn)數(shù)據(jù)權限左电。

1.1 查詢過濾器(Query Filter)

查詢過濾器是 ORM 模塊中的功能廉侧,默認是關閉的,開啟后所有的查詢語句都會在 where 語句的最后自動加上類似 @filter(User) 的表達式篓足。

假設執(zhí)行查詢語句:

select * from user u where u.name = :name
那么開啟 Query Filter 后將會自動變?yōu)椋?/p>

select * from user u where ( u.name = :name ){? and ( @filter(User) )}
關于查詢過濾器的細節(jié)在這里不展開細說段誊,下面具體說明如何使用查詢過濾器實現(xiàn)數(shù)據(jù)權限。

1.2 基于 Query Filter 實現(xiàn)數(shù)據(jù)權限

1.3 開啟

修改 src/main/resources/conf/config.xml 栈拖,增加以下配置屬性:

<properties prefix="orm">
<property name="query_filter.enabled" value="true"/>
</properties>
1.4 實現(xiàn)

編寫類 SecurityQueryFilter.java :

package hello.beans;
import leap.lang.params.Params;
import leap.orm.sql.Sql;
import leap.orm.sql.SqlContext;
import leap.orm.sql.SqlTag;
import leap.orm.sql.SqlTagProcessor;
public class SecurityQueryFilter implements SqlTagProcessor {

@Override
public String processTag(SqlContext context, Sql sql, SqlTag tag, Params params) {
    String entityName = tag.getContent();
    if(entityName.equals("User")) {
        return "t.id = #{env.user.id}";
    }
    return null;
}

}
返回的表達式語法請看數(shù)據(jù)訪問章節(jié)连舍,其中別名 t. 是固定寫法,在執(zhí)行中會被替換為真正的別名涩哟。

配置 bean 生效:

<bean name="filter" type="leap.orm.sql.SqlTagProcessor" class="hello.beans.SecurityQueryFilter"/>

2.使用sqlMAP進行sql拼接
其原理也是sql拼接 不寫了

參考地址:http://leapframework.org/doc/security/op_perm.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末索赏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贴彼,更是在濱河造成了極大的恐慌潜腻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件器仗,死亡現(xiàn)場離奇詭異融涣,居然都是意外死亡童番,警方通過查閱死者的電腦和手機威鹿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽你,“玉大人幼东,你說我怎么就攤上這事檀夹〗畲郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵炸渡,是天一觀的道長娜亿。 經(jīng)常有香客問我蚌堵,道長买决,這世上最難降的妖魔是什么吼畏? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任督赤,我火速辦了婚禮,結果婚禮上泻蚊,老公的妹妹穿的比我還像新娘躲舌。我一直安慰自己,他們只是感情好性雄,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著约计,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迁筛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天尉桩,我揣著相機與錄音,去河邊找鬼贪庙。 笑死,一個胖子當著我的面吹牛插勤,可吹牛的內容都是我干的沽瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼良哲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了助隧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤巍实,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哩牍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡丸边,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妹窖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡骄呼,死狀恐怖,靈堂內的尸體忽然破棺而出蜓萄,到底是詐尸還是另有隱情,我是刑警寧澤绕德,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布患膛,位于F島的核電站摊阀,受9級特大地震影響,放射性物質發(fā)生泄漏踪蹬。R本人自食惡果不足惜胞此,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跃捣。 院中可真熱鬧漱牵,春花似錦、人聲如沸疚漆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闻镶。三九已至甚脉,卻和暖如春铆农,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墩剖。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岭皂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓爷绘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揉阎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容