レンタルサーバでログインコントロールを利用する

ここでは私が借りているcervi上でASP.NET 2.0のログインコントロールを利用するための手順を記述しています。
他のレンタルサーバでも同様の手順で設定ができると思いますが、サーバの各種設定やその設定を確認する方法については利用されているレンタルサーバの管理者にお問い合わせください。

○事前の確認

・ASP.NET 2.0が利用可能であること
      -cerviでは管理者に連絡して2.0が利用できるようにしてもらう必要があります。

・SQL Serverが利用可能であること
      -cerviではSQL Server 2000が標準で利用できるようになっています。

・データベース名、接続文字列を確認しておくこと
      -cerviでは接続文字列をユーザの設定情報にログインして確認できます。

・データベースに対してSQL クエリを発行できること
      -cerviではSQL Server 管理画面からデータベースに接続してクエリを発行することが可能です。

 

○SQL スクリプトを作成する

ログインコントロールを利用するには、利用しているデータベースにコントロールが必要とするテーブル、ビュー、ストアドプロシージャが含まれていればいいわけです。
.NET Framework 2.0に含まれるaspnet_regsql.exeツールを利用すると、これらのテーブル等を作成してくれるSQL スクリプトを手にいれることができます。

aspnet_regsql.exe -sqlexportonly ファイル名 -A all -d データベース名

このようにオプションをつけて実行すれば、指定したファイルにSQL スクリプトが書き込まれます。
このとき注意する点としては、データベース名を間違えないように入力することだけです。
aspnet_regsql.exeは標準的なインストールでは c:\Windows\Microsoft.NET\Framework\v2.0.50727\ フォルダに存在しています。

 

○SQL スクリプトを実行する

cerviのSQL Server 管理画面からデータベースに接続し、クエリアナライザツールを使って上記で取得したSQL スクリプトを実行します。
このときデータベース内に以下のオブジェクトが作成されます。

  テーブル

 aspnet_Applications
 aspnet_Membership
 aspnet_Paths
 aspnet_PersonalizationAllUsers
 aspnet_PersonalizationPerUser
 aspnet_Profile
 aspnet_Roles
 aspnet_SchemaVersions
 aspnet_Users
 aspnet_UsersInRoles
 aspnet_WebEvent_Events

  ビュー

 vw_aspnet_Applications
 vw_aspnet_MembershipUsers
 vw_aspnet_Profiles
 vw_aspnet_Roles
 vw_aspnet_Users
 vw_aspnet_UsersInRoles
 vw_aspnet_WebPartState_Paths
 vw_aspnet_WebPartState_Shared
 vw_aspnet_WebPartState_User

  ストアドプロシージャ

 aspnet_AnyDataInTables
 aspnet_Applications_CreateApplication
 aspnet_CheckSchemaVersion
 aspnet_Membership_ChangePasswordQuestionAndAnswer
 aspnet_Membership_CreateUser
 aspnet_Membership_FindUsersByEmail
 aspnet_Membership_FindUsersByName
 aspnet_Membership_GetAllUsers
 aspnet_Membership_GetNumberOfUsersOnline
 aspnet_Membership_GetPassword
 aspnet_Membership_GetPasswordWithFormat
 aspnet_Membership_GetUserByEmail
 aspnet_Membership_GetUserByName
 aspnet_Membership_GetUserByUserId
 aspnet_Membership_ResetPassword
 aspnet_Membership_SetPassword
 aspnet_Membership_UnlockUser
 aspnet_Membership_UpdateUser
 aspnet_Membership_UpdateUserInfo
 aspnet_Paths_CreatePath
 aspnet_Personalization_GetApplicationId
 aspnet_PersonalizationAdministration_DeleteAllState
 aspnet_PersonalizationAdministration_FindState
 aspnet_PersonalizationAdministration_GetCountOfState
 aspnet_PersonalizationAdministration_ResetSharedState
 aspnet_PersonalizationAdministration_ResetUserState
 aspnet_PersonalizationAllUsers_GetPageSettings
 aspnet_PersonalizationAllUsers_ResetPageSettings
 aspnet_PersonalizationAllUsers_SetPageSettings
 aspnet_PersonalizationPerUser_GetPageSettings
 aspnet_PersonalizationPerUser_ResetPageSettings
 aspnet_PersonalizationPerUser_SetPageSettings
 aspnet_Profile_DeleteInactiveProfiles
 aspnet_Profile_DeleteProfiles
 aspnet_Profile_GetNumberOfInactiveProfiles
 aspnet_Profile_GetProfiles
 aspnet_Profile_GetProperties
 aspnet_Profile_SetProperties
 aspnet_RegisterSchemaVersion
 aspnet_Roles_CreateRole
 aspnet_Roles_DeleteRole
 aspnet_Roles_GetAllRoles
 aspnet_Roles_RoleExists
 aspnet_Setup_RemoveAllRoleMembers
 aspnet_Setup_RestorePermissions
 aspnet_UnRegisterSchemaVersion
 aspnet_Users_CreateUser
 aspnet_Users_DeleteUser
 aspnet_UsersInRoles_AddUsersToRoles
 aspnet_UsersInRoles_FindUsersInRole
 aspnet_UsersInRoles_GetRolesForUser
 aspnet_UsersInRoles_GetUsersInRoles
 aspnet_UsersInRoles_IsUserInRole
 aspnet_UsersInRoles_RemoveUsersFromRoles
 aspnet_WebEvent_LogEvent

  ロール

 aspnet_Membership_FullAccess
 aspnet_Membership_BasicAccess
 aspnet_Membership_ReportingAccess
 aspnet_Profile_FullAccess
 aspnet_Profile_BasicAccess
 aspnet_Profile_ReportingAccess
 aspnet_Roles_FullAccess
 aspnet_Roles_BasicAccess
 aspnet_Roles_ReportingAccess
 aspnet_Personalization_FullAccess
 aspnet_Personalization_BasicAccess
 aspnet_Personalization_ReportingAccess
 aspnet_WebEvent_FullAccess

もしCommunity ServerやDotNetNukeを利用している場合、ここで作成されるオブジェクトと同名のオブジェクトが利用されているため、このSQL スクリプトを実行するとCommunity Server、DotNetNukeが動かなくなる可能性があります。
そのほかのアプリケーションでも事前に手元のマシンで動作を確認しておく必要はあるでしょう。

 

○web.configで利用するデータベースを指定する

web.configに以下のconnectionStrings設定を追加します。

  <connectionStrings>
        <remove name="LocalSqlServer"/>
        <add name="LocalSqlServer"
          connectionString="server=サーバ名;uid=ユーザID;pwd=パスワード;Trusted_Connection=no;database=データベース名"
          providerName="System.Data.SqlClient"/>
  </connectionStrings>

ログインコントロールは標準でLocalSqlServerという名前で指定されたデータベースを見に行くようになっています。
上記の設定はこれを上書きします。
connectionStringの部分はcerviのユーザの設定情報で確認したものに置き換えてください。
サーバ名、ユーザ名、パスワード、データベース名といった値は設定情報にきちんと含まれています。

これだけの作業でログインコントロールが利用できるようになります。
実際に動いているサンプルで動作を確認してください。

 

 

○もしデータベースをきれいにしたいと思ったら

上記のテーブル、ビュー、ストアドプロシージャ、ロールをすべて削除したい、という場合にはaspnet_regsql.exeツールで削除用のSQL スクリプトを生成します。

aspnet_regsql.exe -sqlexportonly ファイル名 -R all -d データベース名

ここで作成されるSQL スクリプトをデータベースに対して実行すればOKです。

 

 

◆ この記事についてのご意見、ご質問は以下のフォーラムにお願いします ◆
http://dotnetfan.org/forums/590/ShowPost.aspx

公開 15-02-2006 05:22 投稿者 ono
カテゴリ:

コメント

コメントはありません
この投稿に対する新規コメントはできません
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems