Реализация пользовательского членства пользователя и пользовательского поставщика членства

Рекомендации

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 ();

Другие вопросы по тегам