2011-01-15 5 views
0

asp.NETでカスタムユーザーメンバシップを使用しているため、userはメンバーを含むオブジェクトです。ユーザーのメンバーの1人が「IsCompanyAdmin」です。 私は会社の管理者のためだけにいくつかのaspxページを持っています。 web.configを使用している管理者以外のユーザーのページを防ぐ方法はありますか?ユーザーメンバーに応じてweb.config内のページを無効にする

+0

カスタムロールプロバイダも使用していますか? – Josh

+0

@ジョシュ:そうです。 – Naor

答えて

1

ASP.Netでは、設定のページへのアクセスを制限するための標準フェアは、Location element経由です。

次の例では、管理者の役割を持つユーザー以外のユーザーを制限します。ただし、これはRoleProviderが設定されていることを前提としています。

<location path="RestrictedPage.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 

は、独自のカスタムロールプロバイダを実装する方法のseveral examplesありますが、あなたはそれを離れて得ることができる場合、私はSqlRoleProviderに建て使用します。

+0

私は管理者の役割を持っていません。私は管理者の役割を持っていません。役割への私の分離はモジュールによるものです:Module1、Module2、... Adminはモジュールではないので、ユーザーが管理者であるかどうかを示すユーザーオブジェクト内のメンバーを作成します。 – Naor

+0

これ以外の唯一の方法は、独自のHttpModuleを作成してweb.configから情報をロードし、着信要求をチェックし、カスタムメンバーシップオブジェクトに基づいてアクセスを制限することです。ちょっと退屈だけど本当に難しいことではありません。 – Josh

1

問題を正しく理解している場合は、データベースに役割を持つ必要はありません。

CustomRoleProvider GetRolesForUserメソッドでできることは、ユーザーに応じてロールを含む文字列[]を返します。認可モジュールはこれらの役割を使用します。あなたのプロパティIsCompanyAdmin = "true"とし、文字列[]に "Admin"を追加します。

次に、Joshが提供する場所の提案は、データベースに「管理者」の役割があるかのように機能するはずです。

+0

修正:すべてのセキュリティチェックは、現在のスレッドにバインドされているPrincipalオブジェクトに基づいて行われます。そして、あなたがそれが欲しいものは何でも構いません... "ボブ"、 "ラリー"など... – Josh

+0

ジョシュに私のコメントをお読みください。 – Naor

+0

@Naor:申し訳ありませんが、私はモジュールの部分を完全に理解していないかもしれません。もう少し説明してもらえますか? – gbs

関連する問題