質問

ユーザーが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>

役に立ちましたか?

解決

それは一種の醜いですが、現在使用しているロールプロバイダー(SQLROLEPROVIDER、WINDOWSTOKENROLEPROVIDER、AuthorizationStorerOleProvider)から継承することができます。その後、明らかにあなたのカスタムロールプロバイダーをWeb.configに入れますu003CroleManager>構成セクション。

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();
}

他のヒント

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

あなたはできる カスタムロールプロバイダーを実装します. 。次に、新しい「偽の」ロール報告を定義し、ユーザーが報告担保役の役割が要求されるときにIsuserinroleメソッド内のレポートおよびアーカイブの役割に属しているかどうかを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top