国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

一種簡單方便的用戶權限管理方法--使用菜單來管理用戶權限

2024-07-21 02:09:25
字體:
來源:轉載
供稿:網友

 
今天剛寫完一個權限管理的程序,本來有很多解決方案可以實現,只是當時靈機一現,突然想到用菜單來進行權限分配,因為大部分項目的權限要通過菜單來控制,對于在窗口中要控制的非菜單的控件,控制他們其實也可以用一個隱藏的菜單來對應,這樣有不少好處,至少可以在一登陸的時候就把所有權限用菜單的enabled為true和false來處理,以后,在需要判斷權限時,取權限對應菜單的enabled一看便知,不用去數據庫里取了!用菜單來進行權限分配的一大好處就是直觀,所見即所得,通過點選菜單,使菜單項的checded為true即表示擁有該權限了。為false即為不擁有該權限。這樣的方式,我認為編程比較簡單,比用treeview來的簡單,尤其pb6。5的treeview還不帶復選框,用treeview來分配權限也是不方便,用數據窗口形式,或則列表框都可以實現,不過我還是自以為用菜單來分配方便簡單,于是決定要這樣做了!不敢獨享,放在這里,也算是對所以幫助過我的網友致謝!
設計思想:

前提:

權限是按菜單來分配的,一個菜單項對應是一個權限,窗口中要控制的非菜單控件通過隱性菜單項來體現到菜單上,保證一個菜單項對應一個權限。

1,從數據庫表里取到用戶組(角色或者用戶,都一樣處理)所具有的權限

2根據這些權限設置菜單,將相應菜單項的checked=true(有權限)

3。用戶在菜單上進行權限設置,要設有權限即設置相應菜單的checked屬性為真

反之,則假

4確定用戶的選擇,遍歷菜單將每個菜單項與用戶組權限表比較,如果用戶權限表里有的權限而在對應菜單里checked=false,則刪去此權限,為true則不處理,如果用戶權限表中沒有的權限而在對應菜單里checked=true,則增加此權限,為false則不處理。

效果圖如下

 



在每個菜單項的clicked事件里寫

this.checked=not this.checked


 

在做這個程序的時候,碰見一個最大的問題就是,在點選菜單時,一點擊左鍵菜單就不展開了,要為下一個權限點選的時候,又要重新點開菜單,這樣是很麻煩的。所以我想要是在點開菜單的同時,可以點選很多子項菜單,這樣就可以只需要展開一次菜單,然后可以給多個子菜單項進行權限設置了。

這可是個大問題啊,問了很多高人。子定義可視類不能以菜單為基類。又不能給菜單定義用戶事件來映射到window消息上。而且菜單只有clicked和selected兩個事件,菜單調用clicked事件后會自動變成不展開狀態,selected事件里又不能用keydown函數來判斷是否點擊了鼠標右鍵或著鍵盤按下了某個鍵,在這個事件里去觸發窗口里自定義事件(這個事件里放了keydown來判斷是否有鼠標右鍵或其他鍵盤鍵按下),也不能遂愿。郁悶了我一天啊!

今天手寫累了,先到這,要是大家覺得放在這不會玷污大家的眼睛的話,我會盡快努力把下文寫完的,

待續!

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永州市| 彭泽县| 丹巴县| 宝鸡市| 通海县| 沭阳县| 布尔津县| 封开县| 双鸭山市| 盐津县| 新源县| 界首市| 井研县| 富川| 新宾| 邮箱| 钟祥市| 开封市| 富宁县| 安康市| 北碚区| 朔州市| 郑州市| 定边县| 岢岚县| 尼玛县| 乌什县| 芒康县| 定襄县| 石首市| 河北区| 石林| 景泰县| 龙口市| 务川| 安西县| 芜湖市| 莎车县| 宝应县| 德保县| 家居|