2013-10-22 60 views
1

我正在研究ASP.net MVC web應用程序。在這裏,我正在實施Windows身份驗證。我在web.config文件中做了必要的配置,使其工作它是否足夠有效地使用會話來維護MVC中登錄的用戶數據應用

通過使用Windows身份驗證,我能夠獲取登錄的用戶名。通過使用它作爲參數,我正在查詢數據庫以獲取登錄用戶的角色。

在我的應用程序中,我有兩個角色。管理員和普通用戶。我需要顯示基於用戶登錄的角色的某些頁面內容的

我可以使用MVC的會話進行在每一個頁面信息,並顯示內容

,例如:在Global.asax中

   protected void Session_Start(object sender, EventArgs e) 
      { 

       Query database.... 

       if(role="Admin") 

       { 

       Session["UserType"]="Adimn"; 
       }      
      else 
      { 
      Session["UserType"]="NormalUser"; 
      } 
     } 

這樣的..然後在每一頁上,我會檢查這個角色,並根據我會隱藏/顯示某些功能的用戶

這是要做到這一點是正確的做法。如果不是,那麼做什麼替代方法。

請建議..

回答

1

您應該使用HttpContext.User.Identity獲得當前用戶。您可以獲取用戶名和用戶角色:

var uName = HttpContext.User.Identity.Name; 
var isAdmin = HttpContext.User.IsInRole("Admin"); 
1

由於任何緩存方法都有正面和負面。你的電話,如果你沒有問題的解決方案。一些親/下面。

優點:

  • 較少請求到DB
  • 更快的網頁(再次,你只是需要加載會話狀態)

缺點:

  • 緩存失效是複雜的問題:即你可能不知道是否特定的用戶不再是管理員
  • 由於您網站中的錯誤導致會話泄露,允許提升權限(只需擁有會話ID,而不需要管理員憑據)。