Пользовательский поставщик членства и MembershipUser - PullRequest
1 голос
/ 15 мая 2011

У меня простой вопрос. Сейчас я думаю о создании настраиваемого поставщика членства для моего приложения, потому что использование отдельных таблиц для членства и для остальной части приложения не является хорошей идеей ... не говоря уже о том, что некоторые данные просто реплицируются вдоль таблиц.

Что я хочу знать, если мне также придется переопределить другие функции, такие как проверка, если пользователь онлайн, и так далее. Или достаточно просто скопировать часть структуры БД и реализовать провайдера?

UPDATE!

Что я действительно хочу знать, так это методы из MembershipUser (например, проверка, если пользователь IsOnline и т. Д.), Будут работать с пользовательской схемой базы данных.

Я знаю, как реализовать пользовательский провайдер, я просто хочу знать, есть ли у меня более утомительная работа по реализации функциональности из других классов * Членства.

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Отдельные таблицы для членства и для остальных приложений не очень хорошая идея? Это должно быть в другой таблице. Может быть, вы имели в виду отдельные базы данных .
В любом случае, вам не нужно вводить в заблуждение все методы. Вот необходимые методы, которые вы должны реализовать:

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 MembershipUser GetUser(string username, bool userIsOnline)
  {
      throw new NotImplementedException();
  }

  public override bool ValidateUser(string username, string password)
  {
      throw new NotImplementedException();
  }

  public override int MinRequiredPasswordLength
  {
      get { throw new NotImplementedException(); }
  }

  public override bool RequiresUniqueEmail
  {
      get { throw new NotImplementedException(); }
  }
}  

Вы можете найти десятки примеров в сети. Некоторые из них:
http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider
http://www.davidhayden.com/blog/dave/archive/2007/10/11/CreateCustomMembershipProviderASPNETWebsiteSecurity.aspx
http://www.shiningstar.net/aspnet_articles/customprovider/CustomProvider.aspx
http://www.devx.com/asp/Article/29256/0/page/3
http://www.15seconds.com/issue/050216.htm
http://www.codeproject.com/KB/aspnet/CustomMembershipProviders.aspx
http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

1 голос
/ 15 мая 2011

Вам не нужно реализовывать полный MembershipProvider. Просто реализуйте нужные биты, а для других неиспользуемых методов выведите NotImplementedException.

0 голосов
/ 22 сентября 2012

Какой лучший подход, если у меня есть некоторые переопределенные методы, которые действительно должны вести себя так же, как абстрактный метод?

Пример.

public override bool ValidateUser(string username, string password) 
{ 
//      This won't work but I need something like this      
        return Membership.ValidateUser(username, password);
} 
...