Реализация пользовательского членства и пользовательского поставщика членства - PullRequest
3 голосов
/ 11 ноября 2011

Ссылки

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 ]

4 голосов
/ 11 ноября 2011

Вам необходимо вернуть экземпляр MembershipUser в функцию, которая является типом возврата для него. В настоящее время он не возвращает то, что должен вернуть.

На codeproject есть хороший учебник: Провайдеры нестандартного членства . Возможно, вам будет полезно понять, где вы не правы.

0 голосов
/ 11 ноября 2011

Не следует создавать новый метод, который возвращает CustomMembershipUser.

У вас должно быть только MembershipUser CreateUser (...) в пользовательском провайдере членства. Перед возвращением вам необходимо привести в действие CustomMembershipUser, чтобы он стал MembershipUser.

например. после вы вернетесь.

возврат (MembershipUser) нового CustomMembershipUser ();

...