2012-06-19 44 views
3

這可以通過一個新的HTTP處理程序來完成,但有配置以下?:ASP.NET給予訪問目錄的用戶名

  1. 網站一個簡單的方法是在基礎設置的用戶使用帳戶用戶名稱爲A001,A002 ....等。
  2. 一旦用戶登錄,他們可以訪問他們的資源在自己的目錄(/ A001)等等...這可能包含文件和圖像

,我已經使用ASP.NET角色和授權有問題是,角色是任一通用的(由角色定義,例如任何人登錄可能能夠訪問該資源)或在web.config文件,這顯然是不可行的在正被創建的用戶帳戶的動態環境的硬編碼:

<authorization> 

<allow users="John"/> // allow John only 
<deny users="*"/> // deny others 

</authorization> 

有沒有一種簡單的方法,以確保只有特定的用戶只能訪問自己的文件夾?

回答

1

那麼使用HTTP模塊將是足夠簡單。

首先這是請求生命週期:

  • 的Application_BeginRequest。
  • Application_AuthenticateRequest。
  • Application_PostAuthenticateRequest。
  • Application_DefaultAuthentication。
  • Application_AuthorizeRequest。
  • Application_PostAuthorizeRequest。
  • Application_ResolveRequestCache。
  • Application_PostResolveRequestCache。
  • Application_MapRequestHandler。燒製僅當服務器以集成模式運行IIS 7和至少> .Net框架3.0
  • Application_PostMapRequestHandler。
  • Application_AcquireRequestState。
  • Application_PostAcquireRequestState。
  • Application_PreRequestHandlerExecute。
  • 執行頁面事件處理程序。 (請參閱頁面生命週期)
  • Application_PostRequestHandlerExecute。
  • Application_ReleaseRequestState。
  • Application_PostReleaseRequestState
  • Application_UpdateRequestCache。
  • Application_PostUpdateRequestCache
  • Application_LogRequest。僅當服務器是IIS 7集成模式且至少啓動.Net Framework 3.0時
  • Application_PostLogRequest。只有當服務器是IIS 7集成模式並至少啓動.Net Framework 3.0
  • Application_EndRequest。

欲瞭解更多信息:http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx

我認爲最適合您需求的最佳的事件是Application_AuthorizeRequest

在這裏,你可以得到被訪問的路徑,你可以有一個地圖您數據庫將您的使用與其允許的路徑相關聯,例如:

UserID   Path 
userID1  ~/UserFiles/User1 
userID2  ~/UserFiles/User2 
userID3  ~/UserFiles/User3 

然後在事件中閱讀此地圖並決定是否授權用戶