Я работаю над приложением ASP.NET4.0 / C # для общедоступного сайта, который должен проверять подлинность только тех сотрудников, которые работают в связанном бизнесе. Идея состоит в том, чтобы сайт имел CMS, чтобы сотрудники могли заходить и вносить изменения в определенный контент, не работая с каким-либо html.
Мой вопрос касается разработки и использования поставщика членства ASP.NET. Я не пытаюсь заставить сайт работать с существующей базой данных, поэтому нет необходимости создавать свой собственный MembershipProvider для этой цели. Однако, поскольку каждый пользователь является сотрудником, я хочу отслеживать дополнительную информацию, такую как имя и номер офиса. Я могу придумать два очевидных способа сделать это:
Использовать класс SqlMembershipProvider по умолчанию. В результате мне нужно было бы добавить соответствующие таблицы в мою базу данных и создать отдельную таблицу для любой «дополнительной» информации, которую я хочу сохранить. Это фактически создает вертикальный раздел на пользовательской таблице, поскольку я бы использовал назначенный asp.net userID в качестве первичного ключа таблицы employee. Чтобы получить «дополнительную» информацию, я мог бы попросить поставщика предоставить информацию о текущем пользователе и запросить базу данных в случае, если я хочу узнать что-нибудь еще.
Создайте одну таблицу для всей информации о сотрудниках (включая логин и пароль) и создайте мои собственные пользовательские классы MembershipProvider и MembershipUser с желаемой функциональностью.
Я также рассмотрел вопрос об использовании профилей для хранения такой информации, однако сайт будет публично содержать списки сотрудников, и эти страницы должны будут получить доступ к некоторым из этой информации. В результате мне, вероятно, следует кэшировать эти данные, и кажется, что использование сериализованных полей, предоставляемых профилями, может вызвать проблемы.
Таким образом, чисто в отношении дизайна ... было бы лучше провести различие между пользователем и сотрудником и использовать SqlMembershipProvider по умолчанию и связанные с ним таблицы или написать свои собственные пользовательские таблицы, в которых хранится нужная мне информация и мои собственный MembershipProvider для доступа к этой информации?