.NET TIPS

[ASP.NET]Express Edition以外のSQL Serverでフォーム認証を利用するには?

デジタルアドバンテージ 岸本 真二郎
2008/12/11

 ASP.NET 2.0では、フォーム認証の仕組みや、Login、LoginStatusなどのコントロールを利用することで、ユーザー認証の必要なWebアプリケーションを容易に作成できる。

 ただしデフォルトでは、フォーム認証の認証情報の格納先がSQL ServerのExpress Editionとして設定されており、Express Editionをインストールしていない環境では、そのままで利用できない。

 そこで本稿では、最小限の修正により、Express Edition以外のSQL Serverでフォーム認証を行う方法を紹介する。

接続文字列の変更

 認証情報の格納に使用されるデータベースは、特に設定を行っていない場合、Machine.configに含まれる接続文字列によって決まる。デフォルトではこれは次のようになっている。

<connectionStrings>
  <add name="LocalSqlServer"
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
    providerName="System.Data.SqlClient" />
</connectionStrings>
Machine.config内の接続文字列
各WebアプリケーションのWeb.configで定義されていない内容は、このMachine.configで定義される。

 このように、Machine.configでは、インスタンス名としてExpress Editionの既定である「SQLEXPRESS」が記述されており、またデータベースとして、Webアプリケーションの「DataDirectory」(App_Dataフォルダ)から動的にデータベース・ファイル(aspnetdb.mdf)をアタッチするように記述されている。

 Express Edition以外のSQL Server 2005やSQL Server 2008を認証情報の格納先として使用するには、上記の設定を使用せずに、Webアプリケーションごとに作成する構成ファイル内(Web.config)でデータベースの接続文字列を再定義すればよい。これは例えば次のように記述する。

<connectionStrings>
  <remove name="LocalSqlServer"/>
  <add name="LocalSqlServer"
    connectionString="data source=(local);Integrated Security=True;initial catalog=aspnetdb"
    providerName="System.Data.SqlClient"/>
</connectionStrings>
Web.configに追記する内容
LocalSqlServerという名前が付けられた接続文字列を上書きしている。ここではローカルPCにインストールされたSQL Serverを想定している。

データベースの準備

 接続文字列の設定に続き、接続先のSQL Serverにデータベースの準備が必要となる。

 ASP.NET 2.0では、以下のパスに「ASP.NET SQL Server登録ツール(aspnet_regsql.exe)」というツールが用意されている。これを使ってASP.NETで利用するフォーム認証のためのデータベースをSQL Serverにインストールできる。

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe

 このツールを実行すると、ウィザードが起動するので、接続するサーバ、作成するデータベース名(デフォルトでは「aspnetdb」)を指定する。


ASP.NET SQL Server登録ツール(aspet_regsql.exe)の実行画面
接続先のSQL Serverや作成するデータベース名を指定する

 これによりデータベースが作成される。また、上述した接続文字列が参照されることにより、Webサイトのプロジェクトから起動できるWebサイト管理ツールにより、ユーザー情報の管理が行えるようになる。


Webサイト管理ツール
フォーム認証に用いるユーザー情報の管理が行える。

 以上の作業で、任意のSQL Serverに用意したデータベースを使ってフォーム認証を行うWebサイトの構築が可能になる。End of Article

利用可能バージョン:.NET Framework 2.0以降
カテゴリ:Webフォーム 処理対象:認証
カテゴリ:Webフォーム 処理対象:構成ファイル
カテゴリ:データベース 処理対象:SQL Server 2005
カテゴリ:データベース 処理対象:SQL Server 2008

この記事と関連性の高い別の.NET TIPS
SQL Server 2005でネットワーク接続を有効にするには?
アプリケーション内でデータベースをアタッチするには?
手軽にSQL Serverのデータベースをコピーするには?
SQL Server 2005 Express Editionに発行されたSQL文をトレースするには?
[ASP.NET]セッション情報をSQL Server上で管理するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間