Каковы преимущества пользовательского членства в .Net? - PullRequest
0 голосов
/ 21 июля 2011

Я создаю пользовательское членство в .net, и я не понимаю их реальных преимуществ, в чем преимущества? Вот мой класс, который наследуется от MembershipProvider :

public class MembershipService : MembershipProvider
{
  public override bool ValidateUser(string username, string password)
  {
    Credencial credencial = context.Credencial.Where(x => x.Usuario == username).FirstOrDefault();

    if (credencial == null) return false;

    if (credencial.Senha == password)
    {
      return true;
    }

    return false;
  }
}

И это моя конфигурация в web.config :

<membership defaultProvider="MembershipService" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add
      name="MembershipService"
      type="Questiona2011.Services.MembershipService" />
  </providers>
</membership>

Вот где я их использую:

[HttpPost]
public ActionResult Index(IndexViewModel indexViewModel)
{
    if (ModelState.IsValid)
    {
        if (MembershipService.ValidateUser(indexViewModel.Usuario, indexViewModel.Senha))
        {
            FormsAuthenticationService.SignIn(indexViewModel.Usuario, false);
            return RedirectToAction("Index", "Default");
        }
    }

    return View();
} 

Я не понимаю, этот класс MembershipService Мне не нужно наследовать от MembershipProvider .

Каковы реальные преимущества использования пользовательского членства, которое наследуется от MembershipProvider ?

Почему мне нужно наследовать от MembershipProvider ?

Ответы [ 3 ]

3 голосов
/ 21 июля 2011

Если вы хотите знать , почему вы должны наследовать от базового класса фреймворка; возможно, вы можете проверить документацию . В частности, он говорит, что вы должны наследовать абстрактный класс MembershipProvider, который уже наследует ProviderBase. Поэтому, как и для любого абстрактного класса, он должен обеспечивать некоторую реализацию для общей функциональности (скорее всего, это связано с настройкой в ​​файлах конфигурации).

Основным преимуществом для развертывания ваших собственных возможностей является изменение поведения реализаций платформы (например, подключение к существующей схеме базы данных). Это позволяет вам использовать элементы управления «Членство», включая «Вход», «LoginView», «CreateUserWizard», «ChangePassword» и т. Д.

1 голос
/ 24 июля 2011

Какое-то время я им пользовался и однажды проснулся .. какая выгода с этим наследством?

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

Общее членство указано, чтобы избежать необходимости заново изобретать колесо ... ребята до сих пор утверждают, что оно стабильно и работает годами. Любое решение, которое не дает такой же гарантии. E, поскольку подавляющее большинство пришло из веб-форм, использующих членство, продолжая использовать то же самое в MVC.

Мое мнение таково, что вы ничего не выиграете с этим наследством. На самом деле это как если бы вы использовали данный интерфейс, поскольку он должен реализовывать весь код! Если не используется с элементами управления веб-формами с элементами управления входом, где мне не нужно кодировать, если у меня был класс членства, но MVC - это мой сценарий, когда у меня нет элементов управления.

Во всяком случае, я должен сказать, это. У меня никогда не было ситуации, когда использование пользовательского членства (с наследованием) было бы лучше! FormsAuthentication class, RoleProvider class и мой пользовательский класс Authentication выполняют работу с аутентификацией и авторизацией.

1 голос
/ 21 июля 2011

Если вы уже создаете пользовательское членство, возможно, вы знаете, почему вы это делаете.

Если вам понадобятся дополнительные поля при регистрации, вы создадите пользовательское поле. Обычно при создании настраиваемого поставщика членства, который использует настраиваемые таблицы SQL Server отдельно от предварительно определенных таблиц, используемых стандартным поставщиком.

...