但是在PDC Preview版本的Whidbey中,這個配置工具的功能還不是很完善。從我使用的情況來看,它目前還只能創建和連接自己的Demo用的Access數據庫,不能連接SQL Server數據庫進行擴展。因此,為了能夠連接SQL Server,我們必須提供我們自己的Providers。這里以連接IBuySpy的Portal數據庫為例來說明如何實現一個Membership Provider。
為了搞清楚如何實現我們自己的Membership Provider,有必要先看看Whidbey默認使用的Membership Provider是如何做的。在machine.config配置文件中,Whidbey使用類似下面這樣的配置實現:
<membership defaultProvider="AspNetAccessProvider" userIsOnlineTimeWindow="15" >
<providers>
<add name="AspNetSqlProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=1.2.3400.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
description="Stores and retrieves membership data from the local Microsoft SQL Server database"
/>
<add name="AspNetAccessProvider"
type="System.Web.Security.AccessMembershipProvider, System.Web, Version=1.2.3400.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AccessFileName"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
description="Stores and retrieves membership data from the local Microsoft Access database file"
/>
</providers>
</membership>
可以看出,Whidbey默認使用SqlMembershipProvider或者AccessMembershipProvider來進行用戶驗證和管理。這兩個Provider實現了IProvider和IMembershipProvider接口,實際上這兩個接口也是每個MembershipProvider所必需的,其中IProvider負責Provider的初始化,而IMembershipProvider則實現MembershipProvider的主要功能。它們的定義如下:
namespace System.Configuration.Provider
{
public interface IProvider
{
public string Name { get; }
public void Initialize(string name,
System.Collections.Specialized.NameValueCollection config);
}
}
namespace System.Web.Security
{
public interface IMembershipProvider
{
public bool ChangePassword(string name, string oldPwd, string newPwd);
public bool ChangePasswordQuestionAndAnswer(string name, string password,
string newPwdQuestion, string newPwdAnswer);
public System.Web.Security.MembershipUser CreateUser(string username, string password, string email,out System.Web.Security.MembershipCreateStatus status);
public bool DeleteUser(string name);
public System.Web.Security.MembershipUserCollection GetAllUsers();
public int GetNumberOfUsersOnline();
public string GetPassword(string name, string answer);
本新聞共3頁,當前在第1頁 1 2 3
文章來源于領測軟件測試網 http://www.kjueaiud.com/