Нужен ли пользовательский класс для участников программы? - PullRequest
2 голосов
/ 27 декабря 2011

Мне не нужны вещи Роли.У меня есть только пользователь с такими свойствами:

Id
Firstname
Last name
Institute
Street
City
Postal
Country
Email
Password
IsCustomer
IsAdmin

Когда пользователь входит в свою учетную запись вместо того, чтобы делать:

if (Membership.ValidateUser(model.UserName, model.Password))

Я бы просто позвонил своему

if (UserRepository.ValidateUser(model.UserName, model.Password))

и если действительный пользователь существует, я все еще различаю IsAdmin или нет.

Если IsAdmin, я перенаправляю на страницу администратора или в область клиентов.

Так что мне действительно нужны все эти материалы провайдера Членства

Ответы [ 3 ]

0 голосов
/ 27 декабря 2011

Да, вам нужен обычный членский поставщик. О том, как его создать, есть эта статья о Code Project, которую вы можете использовать в качестве ссылки

0 голосов
/ 28 декабря 2011

В конце дня вы можете использовать любой из этих подходов. Я использовал встроенный поставщик членства asp.net и сохранил дополнительные данные в другой таблице с aspnet_userId в качестве FK. В других случаях, когда мне нужно было больше интегрировать пользовательский объект с остальной частью моей доменной модели, я использовал пользовательские MembershipProviders. Так как источник для поставщиков «из коробки» теперь доступен, на самом деле это не так сложно / сложно реализовать самостоятельно. На самом деле, это не так уж необычно, исходя из моего опыта.

Да, если вы используете встроенного поставщика членства, это связано с небольшими накладными расходами. Однако, если вы начинаете с asp.net, я бы порекомендовал вам придерживаться встроенного поставщика членства asp.net.

Кстати, вы упоминаете:

Мне не нужны вещи Роли

О да, вы делаете! На данный момент вы ограничиваете себя одной ролью: IsAdmin. Если вам когда-нибудь потребуется поддержка дополнительных ролей, предложенная реализация станет проблемой. Было много мыслей / опыта в разработке asp.net. Цена, которую вы платите за их использование, ничтожна, вы в основном ничего не теряете и потенциально можете много выиграть.

0 голосов
/ 27 декабря 2011

смотрите здесь

Если найден действительный, не просроченный билет аутентификации, модуль FormsAuthenticationModule декодирует его, чтобы установить личность запрашивающего.Он создает новый объект GenericPrincipal и назначает его объекту HttpContext.User .Назначение принципала, такого как GenericPrincipal, состоит в том, чтобы идентифицировать имя аутентифицированного пользователя и то, к каким ролям он принадлежит.

Итак, , если вам нужно будет работать с текущим пользователем
(т.е. <asp:LoginView ID="LoginView1" runat="server">
или string user = System.Web.HttpContext.Current.User.Identity.Name;
или <authorization> <deny users="*"/> <allow roles="Administrator"/> </authorization>)

Вы должны реализовать свой пользовательский провайдер членства .

...