2013-03-01 72 views
0

我必須創建一個存儲用戶id一個權限對象,組用戶在和user's權限。這是一個公共類處理靜態列表

我還需要有存儲這些權限的對象列表靜態對象,如果政府在權限改變任何東西都改變馬上申請每個登錄用戶

我有一對夫婦問題:

  1. 我應該創建這個靜態對象當第一用戶登錄或者是有機制應該用它來創建列表之前,第一個用戶登錄(例如,當我們在IIS啓動我們的應用程序)?
  2. 難道是容易清除的項目列表中,當註銷特定用戶?

這是系統要求,權限設置在管理員進行更改後立即生效。

編輯1:

public class permissionTemp 
{ 
    public static Guid userGuid  { get; set; } 
    public static string[] grupos  { get; set; } 
    public static string[] permissoes { get; set; } 
} 


public static class security 
{ 
    public List<permissionTemp> userPermissionSet { get; set; } 
} 
+0

你是否在某處保留這些權限?權限對象是什麼樣的? – 2013-03-01 12:29:24

+0

@MichaelPerrenoud剛剛更新了我的文章,是的,權限是在數據庫 – 2013-03-01 12:35:45

+0

也許我不完全理解,但它似乎你將不得不檢查數據庫的權限,每個請求的用戶作出;以確保權限沒有被管理員修改,並且用戶仍然有權查看他/她剛剛請求的頁面。 – 2013-03-01 13:42:38

回答

1
  1. 您可以使用Global.asax中的Application_Start方法在網站第一次啓動時運行一些代碼。這將在處理第一個請求之前運行。
  2. 您可以使用在Global.asax的Session_End中的方法從列表中刪除的項目。您也可以在執行FormsAuthentication.SignOut(如果使用表單身份驗證)的同時執行此操作。

注:我會使用一些鎖定機制來防止多個同時訪問列表。存儲列表的另一個地方是WebCache。這被所有用戶使用,所以如果它被人x更新,那麼從人y讀取的下一個將是更新後的版本。

+0

完美...這就是我一直在尋找。從控制器讀取這個對象應該不難 – 2013-03-01 14:20:32

1

想想單身,所以你不必擔心創建時間:

辛格爾頓:

public class Permission 
{ 
    private Permission() 
    { }  

    private static Permission _instance = null; 
    public static Permission Instance 
    { 
     get 
     { 
     if(_instance == null) 
     { 
      _instance = new Permission(); 
     } 
     return _instance 
     } 
} 

現在你可以有機會獲得同一個實例與

Permission.Instance 

該對象在第一次訪問時創建。所以在私有構造函數中,你可以添加你的代碼來讀取數據庫的權限。所有的

0

首先,我建議避免用於存儲這種sensetive信息,並且還如果任何用戶已經關閉瀏覽器沒有點擊「退出」,則對於該特定的用戶將不被刪除對象創建靜態對象。

不過,如果你需要做到這一點,以滿足您的要求,您可以在Applciation啓動事件對象Global.asax文件創建它的應用程序啓動第一次。