Реализация пользовательского членства пользователя и пользовательского поставщика членства
Рекомендации
http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/ms366730.aspx
Вопрос
Во 2-й ссылке именно под заголовком Create a Custom Membership Provider
Вы заметите, что они упоминают это
Вам нужно будет создать пользовательский поставщик членства, который будет поддерживать как пользовательский тип пользователя членства, так и хранилище пользовательских данных членства. Методы GetUser и CreateUser поставщика настраиваемого членства могут быть написаны так, чтобы они возвращали объекты пользовательского типа настраиваемого членства.
ниже мой пользователь членства с пользовательскими полями
Пользовательское членство пользователя
public class CustomMembershipUser : MembershipUser
{
//private fields for internal use
private bool _isMarried;
private bool _hasLicense;
private string _address;
private int _userId;
//public fields for use by end user
public int UserId
{
get { return _userId; }
set { _userId = value; }
}
...
Пользовательское членство провайдера
public class CustomMembershipProvider : MembershipProvider
{
.....
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 override **CustomMembershipUser** CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
но затем я пожаловался IDE, что не может изменить тип возвращаемого значения при переопределении MembershipProvider.CreateUser. Так что же мне теперь делать,
- Создать другой метод с такими же параметрами и вернуть пользовательское членство?
- У меня нет необходимости в вопросе о пароле, полях с секретным вопросом, как мне от них избавиться?
2 ответа
Вам необходимо вернуть MembershipUser
экземпляр в функции, которая является типом возврата для него. В настоящее время он не возвращает то, что должен вернуть.
В codeproject есть хорошее руководство: " Поставщики нестандартного членства". Возможно, вам будет полезно понять, где вы не правы.
Вы не должны создавать новый метод, который возвращает CustomMembershipUser.
Вы должны иметь только MembershipUser CreateUser(...) в пользовательском провайдере членства. Перед возвращением вам необходимо привести в действие CustomMembershipUser, чтобы он стал MembershipUser.
Например, следуя, когда вы вернетесь.
return (MembershipUser) new CustomMembershipUser ();