今天在使用asp.net 2005中的 Login控制項時,用到了Asp.net web site 管理工具 。在進行用戶管理時,Security頁面總是提示連不到Sql ,在網上翻了個把小時後,終於解決,下面就帖出原文。
1.將ASP.NET中的membership應用到sqlserver2000/sqlserver2005中
預設情況下membership在安裝了 Sql Server Express 的情況下才能用,但是在多情況下我們的項目中已經有了自己的資料庫,可能在sqlserver2000或者sqlserver2005,這時我們應當如何來使用membership所提供的功能呢?
這個時候,就要手動地進行MemberShip的配置工作了。利用aspnet_regsql.exe這個工具就可以。
首先,開啟“Visual Studio 2005 命令提示”(在VS2005菜單裡面的Visual Studio Tools裡面能找到),運行aspnet_regsql.exe這個工具。然後按照工具提示,初始化資料庫。
開啟asp.net sqlserver安裝嚮導:
如,配置好您的資料庫伺服器與資料庫。
OK,開啟資料庫看下,如所示,已經安裝了membership所需要的表:
完成資料庫的初始化工作之後,就需要對Web.Config進行相應配置。
2.Web.Config 檔案配製 (重點)
<connectionStrings>
<add name="constrU" connectionString="server=.;database=aspnetdb;uid=sa;pwd=sa" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<membership defaultProvider="AspNetSqlMP">
<providers>
<add name="AspNetSqlMP"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="constrU"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
</providers>
</membership>
<system.web>
<!--
connectionStringName 資料庫連接。這個要在web.config設定
enablePasswordRetrieval 獲得一個值,指示當前成員資格提供者是否配置為允許使用者檢索其密碼。
enablePasswordReset 獲得一個值,指示當前成員資格提供者是否配置為允許使用者重設其密碼。
requiresQuestionAndAnswer 擷取一個值,該值指示預設成員資格提供者是否要求使用者在進行密碼重設和檢索時回答密碼提示問題。
applicationName 擷取或設定應用程式的名稱。
requiresUniqueEmail 指示使用者在建立使用者時是否必須提供唯一的電子郵件地址值。
passwordFormat 指示在成員資格資料存放區區中儲存密碼的格式。下面有詳細說明
maxInvalidPasswordAttempts 擷取鎖定成員資格使用者前允許的無效密碼或無效密碼提示問題答案嘗試次數。
minRequiredPasswordLength 擷取密碼所要求的最小長度。
minRequiredNonalphanumericCharacters 擷取有效密碼中必須包含的最少特殊字元數。
passwordAttemptWindow 擷取在鎖定成員資格使用者之前允許的最大無效密碼或無效密碼提示問題答案嘗試次數的分鐘數。
對PasswordFormat 的詳細說明
屬性指示儲存密碼的格式。密碼可以採用 Clear、Encrypted 和 Hashed 密碼格式儲存。Clear 密碼以明文形式儲存,這可以提高儲存和檢索密碼的效能,但安全性較差,當資料來源安全性受到威脅時此類密碼很容易被讀取。Encrypted 密碼在儲存時進行了加密,可以在比較或檢索密碼時進行解密。此類密碼在儲存和檢索時需要進行額外的處理,但比較安全,在資料來源的安全性受到威脅時不容易被擷取。Hashed 密碼在儲存到資料庫時使用單向雜湊演算法和隨機產生的 salt 值進行雜湊處理。在驗證某一密碼時,將用資料庫中的 salt 值對該密碼進行雜湊計算以進行驗證。無法檢索雜湊密碼。
-->
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="conn"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="conn" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true" >
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="conn" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>