NHibernate 實現系統的許可權控制 一

2021-03-31 08:56:32 字數 2247 閱讀 1065

nhibernate 實現系統的許可權控制(一)

資料物件分析

許可權管理是一般的管理系統都必須具備的基本功能,

同時也是必須具備的。所以準備設計乙個許可權管理的功能,

由於時間問題置於ui部分,可能暫時不能完成,為了學習

新技術,所以決定用nhibernate來做 o-r,當然這裡只用了

一些基本的功能,延遲裝入,以及外聯結的一些功能,在

這次嘗試中沒有使用,最近工作有點忙,白天沒有時間,只有

晚上才有點時間呵呵(偶工作時,用的delphi) ,呵呵。

做這個東西,乙個是學習nhibernate,熟悉。***,同時也是希望

能和大家交流,最好大家能一起把他作乙個 可以實際應用的功能

呵呵。對了還有就是 偶手頭上沒有什麼順手的工具,大部分都只能用

txt來表示了,希望大家見諒。

好我們首先來進行抽象分析

在許可權管理中我們涉及到的類有

動作 模組 使用者 角色

動作是指系統裡的某乙個操作,比如,新增,刪除(和針對資料庫的新增,刪除

有不同的含義),動作必須屬於某乙個,或幾個模組。

//這裡要說一下 其實細分的話,模組上面可以組成 作業,或者 稱之為大模組

// (採購 訂單 進貨單 ....)

//目前我們不討論這樣的情況,因為這樣的分類與許可權分配的關係不大。

角色 許可權的載體,比如我們可以說角色 s 用進貨單 的 新增 許可權。

//角色 是許可權的擁有者,不同角色可以相互包容 。

//角色a 可以由角色b和角色c 組成,a 擁有 b 和 c 所有許可權。

//目前這個功能暫不考慮

使用者 系統的使用者,呵呵,乙個使用者可以乙個多個角色,通過對使用者分配

角色,使使用者在系統中擁有許可權。

好睏,迷迷糊糊的寫,也不知道大家能看懂不??呵呵

好了,我們可以細化一下了,然後 確定 資料結構/實體類

呵呵。資料細化

呼叫方式  編號 名字 標籤  說明

calltypes code name label memo

呼叫方式,其實不是必須的,我們這裡主要是給動作 和模組使用

主要是,為其他的操作作擴充套件使用,具體使用就仁者見仁吧

動作    編號 名字 標籤  呼叫方式編號 說明

actions code name label calltypescode memo 

前面說過這裡不在羅嗦了,但是calltypescode就是calltypes 的code

模組    編號 名字 標籤 父模組             型別(目錄/具體) 呼叫方式編號  說明 最後修改時間

modules code name label parentmodulescode type              calltypescode memo lastmodify

前面說過這裡不在羅嗦了,但是calltypescode就是calltypes 的code ,這裡要說一下,

模組表,還應該增加一些擴充套件字段,呵呵,這個等到偶,準備開始寫,乙個系統框架的

時候再說吧,呵呵,這裡交待一下

實在是困哦,後面的大家也應該能看懂吧,哈哈,太睏哦

模組動作表    編號  模組編號    動作編號

moduleactions id  modulescode actionscode

角色  編號 名字 標籤 型別(系統/高階/普通) 說明

roles code name label type                  memo 

使用者 編號 名字 標籤  性別  部門       職務

users code name label *** department duty

使用者角色表 編號 使用者編號 角色編號

userroles  id userscode rolescode

角色許可權表[主]        編號  角色編號  模組編號

rolepermission**aster code  rolescode  modulescode

角色許可權表[從]        編號 主表編號    動作編號

rolepermissionsdetail id    masterscode  actionscode

順便說一下,目前資料訪問層已基本完成,邏輯層也快了,還有一幅圖怎麼

貼呀,還有資料庫指令碼/程式** 放**??

還有就是為了方便除錯,我們solution裡引用了,nhibernate的專案(原始碼)

希望發布給大家的時候,大家能有個心理準備 哈哈。

Nhibernate 的聚合函式

今天遇到的問題 hql select max sninfo.ln from sninfo 設定maxresult 1 執行這條查詢時,返回的是sninfo物件,其中ln是519,query的返回結果集也不是1。改為iquery q corerepository.activesession.creat...

nhibernate入門的幫助

nhibernate的入門本來是比較容易的,但是我發現沒有想象那麼容易,在看了好多篇入門文章,嘗試了好多的例子後,今天終於測試成功了。寫下這個希望能對後來的朋友有幫助,減少一些挫折感。開源軟體的文件是相對弱項。環境 vs2005 sql server 2005,nhibernate1.2 最後是參考...

NHibernate中的分頁

如些獲得分頁的資料,應是nhibernate中常用的方法 cri.setfirstresult 20 cri.setmaxresults 10 ilist list cri.list list變數就得到某一頁的資料,上面是第20頁 從0計起 的資料。看了一其執行的sql語句 nhibernate s...