Home

Advertisement

http://www.flickr.com/photos/20958118@N0

何分かかるか測っていません。Kioshi君見てますか。

今回の前提は

  • SQL Server 2005 のバージョンのどれか
  • .NET Framework 2.0
  • Visual Studio

まずコンソールを開きます。

image

データベースをつくってMembershipを初期化します。

image

Wizardに従います。

WS000003 WS000004 WS000005 WS000006 WS000007

Membership認証データベースができたので、VisualStudio でプロジェクトをつくります。後々のためにまず空のソリューションを作ります。

image WS000009

つぎにWebサイトを追加します。ソリューションを選らんで右クリックです。

image WS000012 WS000013

ルートにWeb.configを追加します。

image WS000016

web.config に <connectionString>を追加します。

<connectionStrings>
  <clear/>
  <add name="Auth" connectionString="Data Source=.;Initial Catalog=MySiteAuth;Integrated Security=true;"/>
</connectionStrings>

同じく、Membership関係の設定を追加します。

<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15" hashAlgorithmType="SHA1">
  <providers>
    <clear/>
    <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="Auth" enablePasswordReset="true" enablePasswordRetrieval="false"
         requiresQuestionAndAnswer="true" applicationName="MySite"
         requiresUniqueEmail="true" passwordFormat="Hashed"/>
  </providers>
</membership>
<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="SqlRoleProvider">
  <providers>
    <clear/>
    <add connectionStringName="Auth" applicationName="MySite" name="SqlRoleProvider"
         type="System.Web.Security.SqlRoleProvider"/>
  </providers>
</roleManager>
<profile defaultProvider="SqlProfileProvider">
  <providers>
    <clear/>
    <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="Auth" applicationName="MySite" description="MySite"/>
  </providers>
</profile>

次にルートに loginフォルダーを作ってWebフォーム"default.aspx"を追加します。

image

再度web.configを開いて、<authentication>を Form 認証に変更します。

<authentication mode="Forms">
  <forms loginUrl="~/login/default.aspx" protection="Validation" timeout="300"/>
</authentication>

login/default.aspx をデザイナービューで開いてLoginコントロールを貼り付けます。

image

memberフォルダーを作成し、default.aspxを追加してデザインビューで開いてLoginName コントロールを貼り付けます。

image

memberフォルダーの下にweb.config を作成して、<system.web>にロールを設定します。

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

同じようにして、admin/default.aspx,admin/web.configをつくりますが、今度はrole="admin"にします。

image

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

これでできました。テスト用のユーザーを作って、

  • user1  :  admin , member
  • user2  :  member

のロールを与えます。

image WS000031 WS000033 WS000034 WS000035 WS000036 WS000037

member/default.aspxを選んで「ブラウザで表示」させます。

image

パスワードを聞いてくるので,user2でログインします。

WS000039 WS000040

そのまま、/admin/default.aspxをブラウザでアクセスすると権限がないのでまたログインページに移ります。今度はuser1でログインすると管理者エリアに入れます。

WS000042

ブラウザで/member/default.aspxに移動してもuser1には見えます。memberのロールも持っているからです。

WS000043

以上。ここまでは言語は何でもかまいません。