0

MVC ルートへのリンクをサポートするために asp:Menu を拡張する必要があります (私のプロジェクトには MVC ページと非 MVC ページが混在しています)。私のメニューは、参照するファイルへの権限に基づいてユーザーにノードを表示するかどうかを決定するカスタム クラスを使用して生成されます。

MVC ページは、AuthorizeAttribute を使用して制限されます。嘲笑を避ける(できれば)したい

  1. パスが MVC ページまたは標準ページを参照しているかどうかを判断する
  2. MVC の場合、ユーザーにアクセス権があるかどうかを判断する

メニュー生成クラス内のメソッド シグネチャは次のとおりです。

Private Function CanAccessPage(path As String) As Boolean
4

1 に答える 1

0

これが私がこれに使用したアルゴリズムです。

  1. @SLaks answer hereに基づいて、パスが MVC ルートを参照しているかどうかを判断できました。
  2. MVC の場合は、コントローラーの種類を取得しました (これには、コントローラーがどの名前空間にあるかを知る必要がありました)。
  3. controllerType.GetMethods(actionMethodName) によってアクション メソッドを取得します (同じ名前のメソッドが複数ある場合は、リンクが参照するメソッドを選択する必要があります。おそらく HttpGet 属性を持つメソッドです)。
  4. actionMethodInfo.GetCustomAttributes(GetType(AuthorizationAttribute), False) を使用して、指定されたアクションのすべての承認フィルターのコレクションを取得しました
  5. 属性ごとにステップ 1 で作成した偽のコンテキスト情報を使用して OnAuthorization を呼び出します。
  6. TypeOf filterContext.Result が HttpUnauthorizedResult であるかどうかを確認し、それに応じて返す
于 2012-07-23T10:57:26.247 に答える