3

一部はMVCに含まれているASP.NETアプリケーションがあります(残りはレガシーWebフォームベースのCMSです)。アプリケーションはFormsAuthenticationを介して認証されますが、特定のIPアドレスのセットからアプリケーションにアクセスするユーザーは、自動的に「特別な」ユーザーに割り当てられます。

現在、(親の)MVCアプリケーションにエリアとして持ち込みたい理想的な子アプリケーションがあります。このアプリケーションは、認証の第2層としてWindows認証を使用します。認証の第2層を保持する簡単な方法はありますか(おそらく第2の承認属性によって)?これは、ユーザーが、ストレートフォーム認証を除外する特殊フォーム認証ユーザーに使用されるIPアドレスのセットの内外の両方からこのアプリケーションにログインできることを念頭に置いています。また、これがより簡単な解決策になるのであれば、この2番目のレイヤーのWindows認証に必ずしも縛られているわけではありません。

4

1 に答える 1

2

私はまだそれを完全に試していませんが、これまで見てきたことと試したことから、私自身の問題に対する私の解決策は次のとおりです。

  1. Windows 認証の代わりに、保護領域にフォーム認証を使用します。
  2. この領域へのアクセスを許可されている特定のユーザーの役割を作成し、それに応じて割り当てます。
  3. 新しいカスタム承認属性を作成し、認証されていないユーザーをログイン ページに送信します。この場合、アプリケーションがログイン ページを (適切なログイン ページではなく) IP チェッカーとして定義するため、これを行う必要があります。そのため、通常の承認属性を使用すると、要求の無限ループが発生します。このプロセスは、ログイン ページが MVC ではなく WebForms のままであるため、代わりにプレーンを使用していることを除いて、こちらで説明されているソリューションに似ています。RedirectResultRedirectToRouteResult
  4. (オプション) MVC エリアを使用しているため、カスタム承認属性を使用してベース コントローラーを作成し、そこから他のすべてのコントローラーを派生させることもできます。これにより、すべてのコントローラーのすべてのメソッドにプレフィックスを付ける必要がなくなります (そして、どこかでプレフィックスを付けるのを忘れないようにすることは間違いありません!)。

私はまだ他の解決策を受け入れています!

于 2010-09-14T11:50:06.310 に答える