プロバイダの設定方法&Loginコントロールのパスワード規則設定方法

今回の内容はid:dotnetfanさんの助言があったからこそ判明した事です。id:dotnetfanさんありがとうございます。


ASP.NET2.0では様々な新機能やコントロールが追加されています。そのうちの1つLoginコントロールも開発者にとっては嬉しいコントロールではないでしょうか?

ただし、デフォルトの状態ではこのLoginコントロールでログインする為に必要なパスワードは最低8文字から+アルファベットや数字だけではなく、複数の種類の文字を入れなくてはいけません。

これを設定しているのがMachine.Configの属性にある です。ここにminRequiredPasswordLengthminRequiredNonalphanumericCharactersを記述し、設定をすることでパスワード規則を設定しなおす事が出来ます。

minRequiredPasswordLengthプロパティは最低必要な文字数を、minRequiredNonalphanumericCharactersプロパティは文字数の種類を設定する事が可能です。ここで注意するべき事は、Machine.Configにこれを記述してしまっては全てのASP.NETファイルに設定が適応されてしまうということです。煩雑な作業の為出来れば一括でやってしまいたいという人も居るとは思いますが、ここは必要なプロジェクトのWeb.Configにだけ設定するのが望ましいです。

そこで、Web.Configに記入する時の注意です。Web.Configに記述する時はhttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=40314にも書いてありますが、を書き忘れないようにしてください

Web.Configではそれを書くことで、プロジェクトに反映されるMachineConfigのプロバイダ設定をキャンセルさせる事が出来るそうです。(イメージ的に捉えておいてください)そして、その後の要素内に書かれているプロパティで再設定をしていくといった形になるそうです。

 <membership>
      <providers>
      <remove name="AspNetSqlMembershipProvider" />
        <add name="AspNetSqlMembershipProvider"
        type="System.Web.Security.SqlMembershipProvider, 
        System.Web, Version=2.0.0.0, Culture=neutral, 
        PublicKeyToken=b03f5f7f11d50a3a"
        connectionStringName="LocalSqlServer"
        enablePasswordRetrieval="false"
        enablePasswordReset="true"
        requiresQuestionAndAnswer="true"
        applicationName="/"
        requiresUniqueEmail="false"
        passwordFormat="Hashed"
        maxInvalidPasswordAttempts="5"
        minRequiredPasswordLength="4"
        minRequiredNonalphanumericCharacters="0"
        passwordAttemptWindow="10"
        passwordStrengthRegularExpression="" />
      </providers>
    </membership>

ずらずらと書いてありますが、全部のプロパティを理解しているわけでは有りません...(;´ρ`)上にあるのはGotDotNetから借りてきた物なのでご了承を。

ちなみに私は内にあるtype属性に何を書いていいのか全く解っていなかったので、id:dotnetfanさんに聴いてみました。

上の形式の記述は、GACに入ってるクラスを指定するときの書き方と同じようです。デフォルトのSqlMembershipProviderはGACのように書かれているようです。

Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site : Page 3でカスタムプロバイダについての記事が書かれているのでご一読されてもらえると何となく解ると思います。

プロバイダの設定をする時に、どのクラスを使うのかとかの指定をしていればいいそうです。GACを使う時は必要以上に記述しない。とか、仕様にあった形で指定をするとか。

つまり、type属性という物は、プロバイダのクラス指定と考えてもらうといいと思います。プロバイダと言っても、結局は1つのクラスでしかない。だからこそ、どの型を使うのか型指定をしっかりとしなくてはいけ無いと言うことですね。

上のプロバイダの場合だと、Loginコントロールの管理に関する物だったので、SqlMembershipProviderを指定していたという事になります。

typeがクラスだと、他にどんなdllが必要だとか、名前が必要になるとか、バージョンやキーが必要になるなど、残りの記述についても理解する事が出来ると思います。

実はこの記事の殆どがid:dotnetfanさんに教えていただいた事です(;´ρ`)
私以外でもきっとプロバイダについて疑問を持ったりしている人が居ると思ったので書かせてもらいました。プロバイダはちょっと凝ったサイトを作ろうとした時にはかなりの確立で遭遇すると思います。そう言った時にこの記事に事を思い出してみてください。

長くなってしまいましたが最後まで読んでくださってありがとうございました。