開發一個Web專案,使用者的管理幾乎都是不可少的功能,所以想要來使用ASP.NET 工具箱的[登入]標籤內的各項控制項來進行快速開發。不過如果按.Net的預設是會開一個叫做ASPNETDB的資料庫來專門儲存使用者資料。但對於要作專案開發,這種方式並不符合我的需求,用戶資料表當然就是要跟專案開在同一個Table內才合理。每個獨立的專案都要有一個專屬的User Table。另外.Net預設是建立在SQL Express的資料庫,如果是其他的MS SQL資料庫就需另外設定,所以現在就來開始進行吧!
1.建立資料庫
要使用自行設計的資料庫來建立會員資料的相關Table,要使用aspnet_regsql.exe來產生!
(1)請到路徑 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ 找到 aspnet_regsql.exe
(Framework雖然已經升到3.5版,但還是一樣都是使用v2.0.50727的aspnet_regsql.exe)
(2)執行aspnet_regsql.exe就會有精靈畫面出來來協助你設定要存放user資料的相關SQL資料
(3)精靈設定完畢後請再到你的資料表中看一下是否有自動產出以"aspnet_"開頭共11個table
另外也可以用cammand的指令來產生(使用cammand可以有更多的設定空間)
(1)於cammand模式直接輸入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost -U sa -P 密碼 -A mr -d UserInfo
-S 後面跟SQL Server的IP或是主機名稱 例子的"localhost "表示資料庫是在本機
-E 表示要連接到資料庫且資料庫使用Windows驗證。如果要使用SQL驗證則改為 "-U 使用者 -P 密碼 "
-d UserInfo 表示要建立或使用的資料庫名稱為UserInfo
-A mr 驗證選項 m表示作(membership)驗證、p(profile)、c(Web Parts Personalization)、r(role manage)、w(Web Events)、all(上述所有資料表)
2.於web.config檔中製作程式執行所需的provider檔,包含兩種標籤<connectionStrings> 及 <membership>
<connectionStrings>
'使用windows驗證
<add name="mySqlConn" connectionString="Data Source=localhost;Initial Catalog=UserInfo;IntegratedSecurity=SSPI;"/>
'使用SQL Server驗證
<add name="mySqlConn" connectionString="Data Source=localhost;Initial Catalog=UserInfo;User ID=帳號;Password=密碼;Persist Security Info=True;" providerName="System.Data.SqlClient"/>
<membership>
<membership>標籤為<system.web>標籤的子標籤
<membership defaultProvider="UserInfoMembershipProvider">
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<add connectionStringName="mySqlConn"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
name="UserInfoMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
參數說明:
name 是用來做識別用的,同時可能有好幾個會員提供者。
type 包含會員提供者的名稱空間 類名稱 及組件名稱。
connectionStringName 會員提供者一定要依靠資料庫,這個是指定包含有會員資料的資料庫連線字串名稱(就是web.config裡的<connectionStrings>區段的連線字串)。
enablePasswordRetrieval 是否要提供回復原始密碼的功能,但當passwordFormat這個屬性設定為Hashed單向加密的時候此屬性就無法作用了。使用PasswordRecovery 控制項將提供原始密碼。
enablePasswordReset 是否要提供重置密碼的功能,當passwordFormat這個屬性設定為Hashed單向加密的時候,使用PasswordRecovery控制項將會提供新密碼。
requiresQuestionAndAnswer 設定是否必須要提供安全性問題及答案,當此屬性設定為true時,建立使用者的時候就必須要提供安全性問題和答案, 使用PasswordRecovery 控制項也回要求使用者來輸入答案已達到驗證目的。
applicationName 應用程式名稱,達到多個web應用程式都可用同一個資料庫及同一個會員提供者並且不會互相干擾的目的(此屬性對做單一登入的機制很有用!)
requiresUniqueEmail 用來判斷使用者的Email是否為唯一是別不予許重複。
passwordFormat 對密碼加密的格式有Clear、Encrypted 和 Hashed三種。 Clear當然就是以明碼存於資料庫啦,Encrypted 是提供了可還原的加密,Hashed是不可還原的加密。
maxInvalidPasswordAttempts 設定在該時間內(passwordAttemptWindow)嘗試密碼超過指定次數(maxInvalidPasswordAttempts)則會將帳號鎖定。
minRequiredPasswordLength 設定最密碼的最少字串長度。
minRequiredNonalphanumericCharacters 這是指定密碼內最少要有幾個特殊字元(~!@#$%^&*()_+等等..)。
passwordAttemptWindow 設定在該時間內(passwordAttemptWindow)嘗試密碼超過指定次數(maxInvalidPasswordAttempts)則會將帳號鎖定。
passwordStrengthRegularExpression 密碼格式的驗證運算式。
<roleManager>
<roleManager>標籤為<system.web>標籤的子標籤 如果驗證選項有選擇r選項的話則需新增
<roleManager enabled="true" defaultProvider="UserInfoRoleProvider">
<providers>
<remove name="AspNetSqlRoleProvider"/>
<add connectionStringName="mySqlConn"
applicationName="/"
name="LongcareRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
留言列表