0

ユーザーが 2 つの異なるロールのメンバーでない限り、特定の URL へのアクセスを制限したいと考えています。この場合、ユーザーがレポートとアーカイブの両方の役割を持っている場合にのみ、この URL へのアクセスを許可したいと考えています。ASP.net でこれを行う方法はありますか?

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting, Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

私はこのようなものが欲しい:

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting & Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

4

3 に答える 3

1

ちょっと見にくいですが、現在使用しているロール プロバイダー (SqlRoleProvider、WindowsTokenRoleProvider、AuthorizationStoreRoleProvider) から継承し、GetRolesForUser をオーバーライドし、基本実装を呼び出してロールを取得し、必要に応じてそれらを組み合わせることができます。次に、明らかにカスタム ロール プロバイダーを web.config の <roleManager> 構成セクションに配置します。

1 つのメソッド (およびおそらく GetUsersInRole) をオーバーライドし、必要に応じてそれらを組み合わせるだけで済みます。

public override string[] GetRolesForUser( string username ) {
    List<string> roles = new List<string>( base.GetRolesForUser(username) );
    if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
        roles.Add("ReportingAndArchiving");
    }
    return roles.ToArray();
}
于 2009-07-23T17:38:09.597 に答える
0

カスタムロールプロバイダーを実装できます。次に、新しい「偽の」ロールReportingAndArchivingを定義し、ReportingAndArchivingロールが要求されたときに、ユーザーがIsUserInRoleメソッド内のReportingandArchivingロールに属しているかどうかを確認できます。

于 2009-07-23T16:04:13.780 に答える
0

特定のユーザー ID、ページ URL、および許可されたロール (XML) のリストを指定すると、その URL へのアクセスが許可されているかどうかを示すビットを返し、それを使用してフラグを設定する SQL 関数を作成できます。 JavaScriptまたはDHTMLメニューなどで有効な選択肢としてそれを表示します。

于 2009-07-23T15:42:22.217 に答える