ASP.net членство добавить пользовательский столбец - PullRequest
3 голосов
/ 29 сентября 2010

На моей главной странице у меня есть:

MembershipUser thisUser = Membership.GetUser();
loggedInUserID = thisUser.ProviderUserKey.ToString();

thisUser дает мне доступ ко всем полям в aspnet_Membership.

Я хочу новое поле, isSubscribed для каждого пользователя. Я могу использовать SQL-запрос для извлечения значения отлично, но я хочу знать, есть ли какой-либо способ изменить объект membersuser, чтобы он также извлекал это значение, чтобы он был доступен из:

thisUser.isSubscribed.ToString();

Спасибо за любую помощь!

Ответы [ 4 ]

5 голосов
/ 29 сентября 2010

вам нужно будет добавить поле к провайдеру профиля

Описание поставщика профиля можно найти здесь.

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

вот выдержка из статьи

"Функция профиля ASP.NET связывает информацию с отдельным пользователем и сохраняет информацию в постоянном формате. Профили позволяют вам управлять информацией пользователя, не требуя создания и ведения собственной базы данных. Кроме того, ASP.NET Функция профиля делает пользовательскую информацию доступной через строго типизированный API, к которому вы можете получить доступ из любого места в вашем приложении. "

1 голос
/ 29 сентября 2010

Членство для идентификации и аутентификации.Не рекомендуется взламывать вашу безопасность ради мета-свойства.

Как уже упоминалось, Profile - это подходящее место для хранения метаданных, и это устранит необходимость в пользовательском MembershipUser.

Если вам нужен SQL-запрос доступа к данным, используйте SqlTableProvider

0 голосов
/ 06 ноября 2013

Вы можете использовать для этого роли и назначить пользователей на роль подписчика.Например:

Roles.AddUserToRole("Bob", "Subscriber");

У вас будет действительно неинтересное время для запросов по полям профиля.С помощью роли вы сможете перечислять пользователей с:

Roles.GetUsersInRoles("Subscriber");

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

0 голосов
/ 29 сентября 2010

Си Робинсон дал хороший ответ для хранения дополнительных метаданных против пользователей без необходимости изменения базовой схемы, но если у вас уже есть данные об этом пользователе, сохраненные в вашей пользовательской схеме базы данных, это не совсем потренироваться.

Решение, которое я использовал, заключается в реализации собственного провайдера членства:

http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

И тогда вы можете реализовать свой собственный MembershipUser, который предоставляет свойство IsSubscribeed.

Это прекрасно работает с процессом членства в ASP.NET, таким как компоненты входа в систему. Все, что вам нужно сделать, это привести объект, возвращенный GetUser () к вашей пользовательской реализации, и вы настроены!

...