日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#实现权限设置

發布時間:2023/12/20 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#实现权限设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做項目需要實現不同賬號使用功能的限制,參考了一些資料。自己做了些整理,記錄一下免得以后忘記了。

首先思路很重要,只有思路清晰了,才知道怎么去實現:
(1)要有一個數據表去存放這些才能功能(定為A表),并且重要的是,這些存放在數據表A的菜單ID要和相對應功能窗體的·Tag對應這樣在后邊進行代碼編寫的時候才能做出判斷。
(2)還需要一個數據表(B)來存放用戶開放的權限
(3)就是將不同用戶的功能權限設定好,然后通過循環在登錄系統的時候進行判斷是否開放。

上代碼:這個是開放功能權限的部分
private void LoadUserPermission(Int32 userID)
{
isLoading = true;
SelectPermission(false);

B[] b = BOperator.GetPermissionByUserID(userID);//SQL 語句處理for (int r = 1; r < flexGridList.Rows.Count; r++){if (flexGridList.Rows[r].UserData is A){A p = (A)flexGridList.Rows[r].UserData;foreach (var userPermission in b){if (userPermission.PermissionID == p.PermissionID)//菜單ID{flexGridList[r, "授權"] = true;break;}}}}isLoading = false;}private void SelectPermission(bool selectAll){for (int r = 1; r < flexGridList.Rows.Count; r++){flexGridList[r, "授權"] = selectAll;}}

最重要的是登錄系統時循環判斷進行開放功能
這個功能寫在Main類中
B[ ] userPermissions = BOperator.GetPermissionByUserID(ORM.DataPersistence.LoginUser.UserID);//LoginUser為全局變量用來存放登錄系統所用的賬戶

foreach (ToolStripMenuItem menu1 in this.MainMenuStrip.Items){foreach (ToolStripItem menu2 in menu1.DropDownItems){if (menu2 is ToolStripMenuItem){bool isExist = false;foreach (var perm in userPermissions){if (menu2.Tag.ToString() == (perm.PermissionID ?? -1).ToString()){isExist = true;menu2.Enabled = true;break;}}}}// MainMenuStrip.Items ,ToolStripMenuItem和ToolStripItem都是.NET自有類,直接用就行。這兩個類主要作用就是用來獲取功能菜單。

這個是比較簡單的權限設置只是適用于功能簡單單一的情況下使用。還有一種復雜的權限編寫方法,主要是通過反射來實現的,對于功能復雜切比較多的情況下用起來會更方便,并且代碼量會非常少。不過可惜的是我現在還沒學會,等搞明白了會記錄下來。

對了附上功能界面圖片:

總結

以上是生活随笔為你收集整理的c#实现权限设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。