国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net+sqlserver實現的簡單高效的權限設計示例

asp.net+sqlserver實現的簡單高效的權限設計示例

2019-09-01 11:22ASP.NET之家 ASP.NET教程

大部分系統都有權限系統。一般來說,它能管控人員對某個否頁面的訪問;對某些字段、控件可見或者不可見。對gridview中的數據是否可刪除、可添加、可新增等等。

大部分系統都有權限系統。一般來說,它能管控人員對某個否頁面的訪問;對某些字段、控件可見或者不可見。對gridview中的數據是否可刪除、可添加、可新增等等。大部分人都把權限作為一個子系統獨立出來。但是這里我不是想設計一個權限管理系統,網上的設計方案太多了,可以說每個開發人員都有自己的開發權限管理系統的想法和思路。 
在這篇文章中,我先用簡單的C#代碼模仿一個用戶的權限,再使用sql去模擬。這是一種很簡單,很直觀,很高效的方式去判定用戶的權限。 
C#: 
好吧,先從最簡單開始,定義一個用戶(User)類,如下。 

復制代碼代碼如下:


class User 

bool CanDelete; 
bool CanRead; 
bool CanWrite; 
bool CanModify; 
bool CanCreate; 


這里設計5個屬性來管控用戶的權限。我發現這樣雖然很直觀,但是不宜擴張。我們將權限獨立出來,在看下面代碼: 

復制代碼代碼如下:


enum PermissionTypes : int 

None = 0, 
Read = 1, 
Write = 2, 
Modify = 4, 
Delete = 8, 
Create = 16, 
All = Read | Write | Modify | Delete | Create 

class User 

public PermissionTypes Permissions = PermissionTypes.None; 


我們先試用一下,你就能感覺到神奇之處: 

復制代碼代碼如下:


//創建一個用戶 
User admin = new User(); 
admin.Permissions = PermissionTypes.Read 
| PermissionTypes.Write 
| PermissionTypes.Delete; 
//驗證權限 
bool canRead = ((PermissionTypes.Read & admin.Permissions) == PermissionTypes.Read); 
bool canWrite = ((PermissionTypes.Write & admin.Permissions) == PermissionTypes.Write); 
bool canCreate = ((PermissionTypes.Create & admin.Permissions) == PermissionTypes.Create); 
//查看結果 
Console.WriteLine(canRead); //true 
Console.WriteLine(canWrite); //true 
Console.WriteLine(canCreate); //false 


利用了'|'和'&'兩個操作。但是這樣看起來很是很別捏,初始化權限和驗證權限用了一長串'|'和'&'運算的代碼。很不直觀。我在System.Enum中擴展一些方法供你調用,代碼如下。 

復制代碼代碼如下:


//是否存在權限 
public static bool Has<T>(this System.Enum type, T value) 

try 

return (((int)(object)type & (int)(object)value) == (int)(object)value); 

catch 

return false; 


//判斷權限 
public static bool Is<T>(this System.Enum type, T value) 

try 

return (int)(object)type == (int)(object)value; 

catch 

return false; 


//添加權限 
public static T Add<T>(this System.Enum type, T value) 

try 

return (T)(object)(((int)(object)type | (int)(object)value)); 

catch (Exception ex) 

throw new ArgumentException( 
string.Format( 
"不能添加類型 '{0}'", 
typeof(T).Name 
), ex); 


//移除權限 
public static T Remove<T>(this System.Enum type, T value) 

try 

return (T)(object)(((int)(object)type & ~(int)(object)value)); 

catch (Exception ex) 

throw new ArgumentException( 
string.Format( 
"不能移除類型 '{0}'", 
typeof(T).Name 
), ex); 


使用一下: 

復制代碼代碼如下:


//創建一個用戶 
User admin = new User(); 
PermissionTypes permissions = new PermissionTypes(); 
admin.Permissions = permissions; 
//添加權限 
admin.Permissions = admin.Permissions.Add(PermissionTypes.Create); 
admin.Permissions = admin.Permissions.Add(PermissionTypes.Read); 
admin.Permissions = admin.Permissions.Add(PermissionTypes.Write); 
//判斷權限 
bool canRead = admin.Permissions.Has(PermissionTypes.Read); //true 
bool canWrite = admin.Permissions.Has(PermissionTypes.Write); //true 
bool canDelete = admin.Permissions.Has(PermissionTypes.Delete); //false 
bool canCreate = admin.Permissions.Has(PermissionTypes.Create); //true 
Console.WriteLine(canRead); //true 
Console.WriteLine(canWrite); //true 
Console.WriteLine(canDelete); //false 
Console.WriteLine(canCreate); //true 
Console.Read(); 


SQL: 
大部分權限管理都是數據庫的操作,好依照上面的思路,我在sqlserver里面模擬一下以上的操作,在sql中與或運算是很高效的。先設計兩張表User和Permission。 

asp.net+sqlserver實現的簡單高效的權限設計示例

 

asp.net+sqlserver實現的簡單高效的權限設計示例
1、獲取有Read權限的所有用戶: 

復制代碼代碼如下:

select * from [User] where PermissionTypes&1 =1


Result: 
asp.net+sqlserver實現的簡單高效的權限設計示例
2、獲取有Delete權限的所有用戶: 

復制代碼代碼如下:

select * from [User] where PermissionTypes&8 =8


Result: 
asp.net+sqlserver實現的簡單高效的權限設計示例
3、判斷麒麟是否有有Delete權限 

復制代碼代碼如下:


if exists (select * from [User] where Name='qilin' and PermissionTypes&8 =8) 
print 'true' 
else 
print 'flase' 


Result: flase
作者:朱祁林

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 羞羞视频免费网站 | 91精品国产综合久久婷婷香蕉 | 国产精品久久久久久吹潮 | 中文字幕av一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 一区二区三区日本 | 亚洲精品第一区在线观看 | 婷婷免费视频 | 亚洲成av人片在线观看无码 | 精品在线一区二区 | 在线视频一区二区三区 | 久久亚| 国产欧美精品一区二区色综合 | 亚洲清色 | 欧美一级久久 | 久久成人精品视频 | 久久视频精品 | 91cn国产在线 | 激情五月综合 | 国产精品去看片 | 韩日精品一区 | 色天堂影院 | 亚洲 精品 综合 精品 自拍 | 一级毛片视频 | 超碰在线观看97 | 91精品中文字幕一区二区三区 | 国产伦精品一区二区三区四区视频 | 欧美成人激情视频 | 黄色毛片在线看 | 国产乱码精品一区二区三区中文 | av不卡电影在线观看 | 天天精品 | 亚洲欧美日韩电影 | 成人午夜视频免费 | 国产在线不卡观看 | 精品久久久久久久久久久久 | 国变精品美女久久久久av爽 | 国产精品网站在线观看 | 美女视频一区 | 亚洲精品一区 | 色精品|