ASP.NET認証メカニズムmembership入門——構成編(2)

4313 ワード

前編ではmembershipおよびASPの構成方法について述べた.NET Forms認証、本編では権限制御部について、詳しく説明します.
 
すべての基本構成が完了したら、匿名でアクセスできるディレクトリと、ユーザーがログインしてアクセスできるページを構成する必要があります.
まず、プロジェクトにadminフォルダを作成し、adminフォルダにwebを追加します.configファイル、そしてその中のノードの下に次のコードを追加します.
<authorization>
    <allow users="admin"/>
    <deny users="*"/>
</authorization>

次にadminディレクトリの下にページを追加し、そのページにアクセスして効果を見てみましょう.前編で述べたようにすべて正しく構成されている場合は、ページが表示されていないのではなく、私たちが前にの下ノードのLoginUrlプロパティが指していたページにジャンプし、ログインを要求していることがわかります.これが私たちに必要な効果ではないでしょうか.
 
次に、上記の構成の意味を説明します.
ノード:名前の通りアクセスを許可するという意味で、はユーザー名が「admin」のユーザーアクセスを許可します.
ノード:アクセス禁止です.ここではワイルドカード「*」を使用します.ワイルドカードは2つあります.*はすべてのユーザーを表し、もう1つは「?」すべての匿名ユーザーを表します.だからはすべてのユーザーのアクセスを許可しないという意味で、もちろんそれは、すべての匿名のユーザーがアクセスできないことを意味します.
説明する必要があるのは、すべての構成が上から下の順に一致していますが、一致に成功すると、下に一致しません.例を挙げます.
<authorization>
    <allow users="admin"/>
    <allow users="zhangsan"/>
    <deny users="*"/>
</authorization>

 ASP.NETはまず現在ログインしているユーザ名="admin"?等しい場合は判断を続行せず、そのユーザのアクセスを直接許可します.等しくない場合は、現在ログインしているユーザー名=="zhangsan"が等しいと判断し続けると、アクセスが許可され、等しくない場合は下に下がり、という構成が読み込まれ、すべてのユーザーアクセスが拒否され、LoginUrlで指定されたページにジャンプして再ログインが要求されます.
 
しかし、もしそうなら、ディレクトリの1級の権限制御しか実現できません.あるファイルのアクセス権限を制御するには、どうすればいいのでしょうか.このファイルをフォルダに入れてからwebを追加しなければなりませんか.configは制御しますか?答えは否定的で、単一ファイルへのアクセス制御に対して、ASP.NETにも対応する構成があります.
<configuration>
    <location path="a.aspx">
      <system.web>
        <authorization>
          <deny users="?"/>
        </authorization>
      </system.web>
    </location>

    <system.web>
      <authorization>
        <allow users="admin"/>
        <allow users="zhangsan"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>

上記の構成を見るとノードの上(上)にノードを追加し、pathプロパティでlocation内の構成がどのファイルに対して単独であるかを指定します.具体的な内容はあまり言わないので、皆さんも理解していると思います.ただし、locationノードが複数あることに注意してください.これは、同じディレクトリの下にある異なるファイルに異なるアクセス権があることを意味します.
 
はい、ここまで配置すると完成の大半です.もう1つの問題は、ユーザーが多い場合は、プロファイルにこれらのユーザーをすべて羅列する必要があります.また、後で新しいユーザーを追加して、構成の変更を続けなければなりません.面倒です.どうしようかな?共通の方法は、ロールの概念を導入することです.users、adminなど、すべてのユーザーにロールを割り当てます.次に、これらのロールのアクセス権を制御するだけです.後で新しいユーザーを追加すると、この新しいユーザーにロールを割り当てるだけで、構成を変更する必要がなく、本当に便利です.実は、membershipもキャラクターのコンセプトを提供しており、簡単な構成で実現できます.
キャラクター機能を実現するには、とても簡単です.machineに行きます.configのノードの下にノードが見つかり、ノード全体がWebにコピーされます.configでは、一般的に2つのサブノードがありますが、1つ削除して、1つ残しておけばいいです.すべては次のとおりです.
<roleManager>
  <providers>
    <add name="AspNetSqlRoleProvider"
         connectionStringName="LocalSqlServer"
         applicationName="/" 
         type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

この構成は比較的簡単で、各構成は前の構成と同じで、もう言わない.少し修正します.
<roleManager enabled="true" defaultProvider="myAspNetSqlRoleProvider">
  <providers>
    <add name="myAspNetSqlRoleProvider"
         connectionStringName="ConnectionString"
         applicationName="TestMembership" 
         type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>

注:このroleManagerにはプロパティenable=「true」が複数あります.これは、ロール管理がデフォルトでオフになっているため、開くように設定する必要があります.
 
はい、すべての構成はここで全部終わりました.後のことを知りたいなら、次の分解を聞いてください.『ASP.NET認証メカニズムmembership入門——符号化編』.