3

フォーム認証を使用していますが、特定のページを特定のロールに制限したいと思います。現在、ログインすると、誰もがアプリケーション全体にアクセスできます。

ただし、特定のページを特定の役割に制限したいと思います。たとえば、「ログの表示」ページ。

私のweb.configファイルは次のようになると思います。

<location path="logs/view/">
<system.web>
  <authorization>
    <allow roles="super, admin"/>
  </authorization>
</system.web>

しかし、私の問題は、基盤となるアプリケーションの構築方法で、ユーザーがapi呼び出しを介して正常にログインすると、「User」オブジェクトが返され、そのユーザーの役割がそのオブジェクトの一部であるということです(User.Role == "admin") 。APPにユーザーの役割を伝える参照データベーステーブルは実際にはありません。

どうすれば関連付けることができますか

<allow roles="super, admin"/> 

私のwebconfigでUserオブジェクトのroleプロパティにビットしますか?

4

2 に答える 2

1

global.asaxでインスタンスAuthenticateRequestのイベントに接続できます。HttpApplicationそのコンテキストではIPrincipal、必要な設定を持つように実装を構成する必要があります。これを行う最も簡単な方法は、をインスタンス化し、のプロパティをRolePrincipal設定することです。UserHttpContext

更新以前の回答に投稿したいくつかのサンプル実装を調べました。ASP.NET MVCに基づくものと、Webフォームに基づくものがあります。

于 2012-08-16T13:07:06.977 に答える
0

ロケーションベースの設定を使用します。

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

詳細については、 MSDNでウォークスルーを行うことができます

于 2012-08-16T13:08:56.133 に答える