Пользовательское членство или нет - PullRequest
9 голосов
/ 31 марта 2011

Я создаю веб-сайт (футбол, футбол) в ASP.NET MVC3 и хочу иметь пользователей (с дополнительной информацией, а затем пользователей в членстве по умолчанию, это обычные посетители) и игроков, которые, на мой взгляд, лучше всего будут наследовать пользователейи иметь некоторую дополнительную информацию как номер платья, ... Игроки также могут публиковать статьи, пользователи могут просто комментировать статьи.Каков наилучший способ сделать это?Должен ли я использовать поставщика членства по умолчанию, или я должен сделать свой собственный или использовать некоторые сторонние решения?А можете ли вы опубликовать несколько статей и руководств по смене оригинального провайдера или статью по созданию собственного провайдера для asp.net MVC3?Или это так же, как MVC2?

Ответы [ 5 ]

5 голосов
/ 31 марта 2011

Создать своего провайдера членства очень просто.Просто создайте класс, полученный из MembershipProvider.И реализовать элементы, которые смотрят в БД, например (или любой другой источник данных).

public class YourMembershipClass: MembershipProvider
{
    public override bool ValidateUser(string username, string password)
    {
         return YourDataLayer.ValidateUser(username, password);
    }
    public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
    {
        return YourDataLayer.GetSpecificUser(providerUserKey, userIsOnline);
    }
    // Implement the other methods as well
 }

Затем добавьте свой YourMembershipClass в web.config:

<membership defaultProvider="MlgMembership">
  <providers>
    <clear />
    <add name="CustomMembership" type="YourMembershipClass" enablePasswordRetrieval="false" />       
  </providers>
</membership>
2 голосов
/ 31 марта 2011

Если вы хотите хранить информацию о типе профиля, например, имя, фамилию, должность и т. Д., Для каждого пользователя, вы сможете использовать систему Profile, встроенную в членство ASP.NET.Если вы хотите хранить больше информации, связанной с идентичностью, то да, вам нужно будет создать своего рода провайдера членства.На веб-сайте ASP.NET есть хорошее видео о создании собственного провайдера: http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

Что касается того, что разные типы пользователей могут выполнять различные действия, вы можете использовать систему Roles, встроенную в членство ASP.NET.,Вы можете указать свои методы действий, чтобы разрешать вызовы только пользователям с определенными ролями.Например, если у вас есть метод действия PostArticle, и вы хотите, чтобы игроки могли только получить к нему доступ, у вас будет что-то вроде этого:

[Authorize(Roles="Player")]
public ActionResult PostArtcile(){
    return View();
}

Атрибут Authorize говорит MVC разрешать только аутентифицированным пользователям вРоль «Player» для вызова метода действия.Вам по-прежнему нужно будет ограничить доступность ссылки на статью в своем интерфейсе, но есть несколько способов сделать это.

Скотт Митчелл (Scott Mitchell) предлагает большую серию статей, охватывающих все аспекты членства:http://www.4guysfromrolla.com/articles/120705-1.aspx

1 голос
/ 31 марта 2011

Я советую вам:

  • Используйте поставщика членства, чтобы просто иметь дело с регистрацией и аутентификацией пользователя.И пусть он позаботится о безопасности пользователя (пароль восстановления, подтверждение пользователя ....)

  • Затем используйте роли, чтобы разделить пользователей по их ролям ("Players, normalUsers, ..").").

  • И НИКОГДА не используйте поставщика профилей, так как он стоит столько трафика, который вам не нужен, и вместо этого вы можете создать свою собственную таблицу в базе данных для храненияваша дополнительная информация.

  • Тогда вы можете использовать EF или любое ORM для получения этой информации в любое время.

  • Не забудьте использовать атрибуты авторизации [Authorize(Roles="Players")] в ваших контроллерах и действиях, зависящих от ролей.
1 голос
/ 31 марта 2011

Взгляните на этот футбол Клубный сайт asp.net стартовый комплект.

0 голосов
/ 31 марта 2011

Я бы посоветовал внедрить собственного провайдера членства, это означает, что нужно реализовать только те биты, которые вам нужны, и сформировать основу для всего вашего управления пользователями.

Провайдер членства одинаков для WebForms и MVC, их вполне достаточно.несколько примеров на SO и Google.

...