2012-06-04 67 views
2

與許多現實世界的應用程序一樣,安全性(登錄名/密碼)僅用於授予/拒絕對整個應用程序的訪問。現在客戶已經要求細粒度的安全性,比如一些網頁應該只能被看到,一些用戶可以刪除其他的不可以等。 基本上客戶端正在請求以下內容。實現ASP.NET Web應用程序中的安全性作爲事後考慮

有效權限::用戶 - >網頁 - >訪問類型(查看,創建/編輯,刪除)應用

詳細

  • ASP.NET/C#
  • 對於商務數據
  • SQLCE用戶名/密碼/型材/日誌
  • Ext.NET主UI
  • MSSQL Server 2008中

我們討論,這是更好地提升security.sdf文件,並有屏幕(網頁),一張桌子和一個連接用戶+屏幕+表一個數字,表示訪問的類型,即

  • 1:讀
  • 2:寫
  • 4:刪除

這些可以使用位運算符來檢查。該應用程序使用ASP.NET模擬訪問MSSQL2008

問題是如何在Web應用程序中實現它?

如果有人有更好的想法,請分享!

回答

3

您可以使用IsInRole函數並將您的用戶分類爲角色。每個角色都可以有一些只能完成的操作。所以通過在女巫角色中提問是你可以讓他做或不想的用戶。

HttpContext.Current.User.IsInRole("Role") 

或者你也可以做反向,問,如果這個動作可這個角色,這裏是一個簡單的對象,具有權限和檢查。

public enum csPermissions 
{ 
    pActionDelete = 1, 
    pActionEdit = 2 , 
    // more names... 
} 

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    // more permissions... 
}; 

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    // more permissions... 
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction) 
{ 
    // questions here for all users roles... 
    // here is only an example 
    if (HttpContext.Current.User.IsInRole("Administator"))) 
    { 
     for (int i = 0; i < AdminPermission.Length; i++) 
      if (AdminPermission[i] == (int)AskPermitForThisAction) 
       return true; 
    } 

    // no permission found 
    return false; 
} 
相關問題