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

1、使用 query filter

先舉例說明一下數(shù)據(jù)權(quán)限,假設(shè)一個(gè)工作任務(wù)應(yīng)用有以下的需求:

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

數(shù)據(jù)權(quán)限是個(gè)比較復(fù)雜的問題,規(guī)則非常靈活,在Leap中并沒有內(nèi)置實(shí)現(xiàn),但提供了一個(gè)基礎(chǔ)機(jī)制,可以相對簡單的實(shí)現(xiàn)數(shù)據(jù)權(quán)限。

1.1 查詢過濾器(Query Filter)

查詢過濾器是 ORM 模塊中的功能,默認(rèn)是關(guān)閉的,開啟后所有的查詢語句都會在 where 語句的最后自動(dòng)加上類似 @filter(User) 的表達(dá)式。

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

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

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

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

1.3 開啟

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

<properties prefix="orm">
<property name="query_filter.enabled" value="true"/>
</properties>
1.4 實(shí)現(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;
}

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

配置 bean 生效:

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

2.使用sqlMAP進(jìn)行sql拼接
其原理也是sql拼接 不寫了

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容