2010-12-10 26 views
5

私は自分のアプリケーションで4つの役割を持つAsp.netアプリケーションに取り組んでいます。 1.管理者2.ユーザー3.販売代理店4.アフィリエイト。そして、私はこれをフォーム認証を使用して、すべてが単一の役割(ユーザー)に対してうまく機能していました。しかし、今私は4つの役割を持っており、私はこれを管理する方法を取得していません。私は異なるユーザーのための4つのフォルダがあります。 私が再販業者のアカウントでログインし、ユーザーのURLを変更すると、ユーザーがアクセスできるようになります。しかし、私はこれを望んでいない。私は彼のアクセスエリアにしかアクセスできないアプリが必要です。リセラーがログインした場合、リセラーのページや同じフォルダにアクセスすることはできません。フォーム認証Asp.netの

この解決策を見つけるのを手伝ってください。あなたはへのアクセスを制限されている各フォルダのweb.configファイル内の適切な認証設定を設定する必要が

答えて

0

、すなわち

<authorization> 
    <deny users="?" /> 
    <allow roles="Administrators" /> 
    <deny users="*" /> 
</authorization> 

のみ「管理者」の役割を持つ検証されたユーザへのアクセスを許可します。

+0

匿名ユーザーを拒否する必要はありません。 Allow rolesとDeny Allだけが必要です。 – Phill

+0

真ですが、妥当性検査を簡単に行うには、匿名ユーザーに対してロールルックアップを試行するのはなぜでしょうか。 – Lazarus

+0

ちょうど好奇心が強い...なぜ落選ですか? – Lazarus

1

ここでは2つのことがあります。まず、ロールによって各フォルダへのアクセスを制限することは、あなたのweb.configに<location>要素を使用すれば十分です。

<location path="Resellers"> 
    <system.web> 
     <authorization> 
      <allow roles="Reseller"/> 
      <deny roles="*"/> 
     </authorization> 
    </system.web> 
</location> 

<location path="Users"> 
    <system.web> 
     <authorization> 
      <allow roles="User"/> 
      <deny roles="*"/> 
     </authorization> 
    </system.web> 
</location> 
... 

はまた、あなたの個々のページでは、あなたのユーザーがページにアクセスするための正しい役割であるかどうかを確認する IsUserInRole関数を呼び出すことができます。

Beginning ASP.NET Securityのコピーを入手したい場合は、これを行う方法に関する素晴らしい情報があります。

+0

すべての役割を拒否して停止する必要はありませんか? – Lazarus

+0

@Lazarusおそらく...私は決して認証要素を設定することのすべてを思い出すことはできません。ラウンドを入れ替えました。 – PhilPursglove

+0

私はそれらが定義の順番で処理されると信じています:) – Lazarus

0

各フォルダには、問題のロールへのアクセスを制限するweb.configファイルを配置する必要があります。たとえば、再販業者のフォルダには、以下の内容を含むweb.configがあります。

<authorization> 
    <deny users="*"/> 
    <allow roles="Resellers"/> 
</authorization> 

その他のフォルダについても同様です。コード以下のような

+0

すべてのユーザーを拒否して停止することはありませんか? – Lazarus

0

使用:

<location path="Users"> 
     <system.web> 
      <authorization> 
       <allow roles="Users"/> 
       <deny users="*"/> 
      </authorization> 
     </system.web> 
    </location> 
1

あなたが許可を設定するか、また、より多くの粒状を取得し、あなたがこのようにロックダウンするクラスやメソッドを飾ることができますweb.configファイルを使用することができます。

[PrincipalPermissionAttribute(SecurityAction.Demand, Role = @"Administrators")] 

これはすべて、設定できる役割マネージャの一部です。対処方法を説明しているthisの記事を読むことから始めます。

関連する問題