3

これは、新しい HTTP ハンドラーを作成することで実行できますが、以下を構成する簡単な方法はありますか?:

  1. サイトは、A001、A002 などのユーザー名を持つユーザー アカウントに基づいてセットアップされます。
  2. ユーザーがログインすると、ディレクトリ (/A001) などのリソースにアクセスできます...ファイルや画像が含まれる場合があります

ASP.NET でロールと承認を使用して私が抱えていた問題は、ロールが一般的 (ロールによって定義されている、たとえば、ログインしているすべてのユーザーがリソースにアクセスできる可能性がある) であるか、明らかにそうではない web.config ファイルにハードコードされていることです。ユーザー アカウントが作成される動的な環境で実現可能:

<authorization>

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

</authorization> 

特定のユーザーのみが自分のフォルダーにのみアクセスできるようにする簡単な方法はありますか?

4

1 に答える 1

1

HTTPモジュールを使用するのは簡単です。

まず、これはリクエストのライフサイクルです:

  • Application_BeginRequest。
  • Application_AuthenticateRequest。
  • Application_PostAuthenticateRequest。
  • Application_DefaultAuthentication。
  • Application_AuthorizeRequest.
  • Application_PostAuthorizeRequest。
  • Application_ResolveRequestCache。
  • Application_PostResolveRequestCache。
  • Application_MapRequestHandler。サーバーが統合モードで IIS 7 を実行していて、少なくとも >Net Framework 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

次に、イベントでこのマップを読み、ユーザーが承認されるべきかどうかを決定します

于 2012-06-19T23:47:10.650 に答える