我開發了自己的自定義會員和角色提供者。 System.Web.Security.Membership類調用我尚未實現的CreateUser方法(故意在我的MembershipUser中需要更多信息)。會員級別在我的自定義提供者上調用「錯誤」方法?
我應該在這種情況下使用Membership類嗎?
現在我爲我自己的成員資格提供者使用我實現的CreateUser方法進行類型轉換,這是要走的路嗎?我感覺有點失落,我該如何處理?
((MyMembershipProviderBase)Membership.Provider).CreateUser(username, password, email, lastName, firstName, phoneNumber, out status);
會員提供CREATEUSER的方法:
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
throw new NotImplementedException();
}
public MyMembershipUser CreateUser(
string username, string password, string email, string lastName, string firstName,
string phoneNumber, out MembershipCreateStatus status)
{
// implemented...
}
*編輯
Respons到@elkdanger評論。
這是你在評論中提到的那種包裝嗎?
現在Membership類調用重定向到我自己的實現的標準CreateUser方法,問題是我不能爲用戶設置附加信息(firstname,lastename和phonenumber)。這是要走的路,然後處理從其他地方(我創建我的用戶)設置附加信息?
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion,
string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
return this.CreateUser(username, password, email, "", "", "", out status);
}
public MyMembershipUser CreateUser(
string username, string password, string email, string lastName, string firstName,
string phoneNumber, out MembershipCreateStatus status
)
{
var args =
new ValidatePasswordEventArgs(username, password, true);
OnValidatingPassword(args);
if (args.Cancel)
{
status = MembershipCreateStatus.InvalidPassword;
return null;
}
if (RequiresUniqueEmail && GetUserNameByEmail(email) != "")
{
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
MembershipUser u = GetUser(username, false);
if (u == null)
{
try
{
status = Repository.CreateUser(username, EncodePassword(password), email, lastName, firstName,
phoneNumber);
}
catch
{
status = MembershipCreateStatus.ProviderError;
}
return (MyMembershipUser)GetUser(username, false);
}
else
{
status = MembershipCreateStatus.DuplicateUserName;
return null;
}
}
感謝您的評論!我不知道我是否完全理解你的建議應該如何實施,但我試了一下,並在上面更新了我的帖子。 – user579089 2011-02-11 11:50:44