2009-08-06 6 views
0

Мне нужно создать базу данных для приложения, в котором есть миллионы пользователей. Теперь у этого сайта будет несколько администраторов, таких как HRadmin, SuperAdmin, SalesAdmin.I может иметь только одну роль в качестве администратора.Как управлять несколькими администраторами сайта и пользователями в базе данных?

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

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

Как я должен реализовать эту вещь в базе данных, так что передний конец оленьей кожи стал bulky.I я использует ASP.NET2.0 и SQL Server 2005.

ответ

3

Поскольку вы используете ASP.NET и SQL Server 2005, взгляните на использование ASP.NET Membership. Существует инструмент, который будет создавать таблицы базы данных для вас и включает поддержку нескольких пользователей, ролей и полей профиля.

Подробный обзор членства в ASP.NET: http://www.4guysfromrolla.com/articles/120705-1.aspx.

+0

У меня был взгляд, но он не подходит для моего ремаркетинга. Это очень жестко, и нам не дают время писать собственный поставщик мембернинга. – Rohit

+0

Вам не нужно будет создавать поставщика. Инструмент создает базу данных, хранит процедуры и представления для вас, и вы можете подключиться к ней, как вам хотелось бы.Это отличный инструмент, поскольку он требует всей работы по созданию системы управления пользователями. –

+0

Средство регистрации ASP.NET SQL Server (Aspnet_regsql.exe) создаст базу данных, необходимую для поставщика членства SQL. http://msdn.microsoft.com/en-us/library/ms229862%28VS.80%29.aspx – MyItchyChin

0

Я согласен с использованием поставщика членства ASP.NET. Вам нужно будет только выполнить просмотр один раз, когда пользователь войдет в систему. Затем вы можете использовать forms authentication для создания безопасного файла cookie, содержащего сведения об аутентификации и ролях. До тех пор, пока у вас есть хорошо проиндексированная таблица, один поиск должен быть быстрым, даже если у вас есть миллионы строк.

0

Если вы будете идти с ASP.NET членства - Пожалуйста, прочитайте Performance Considerations for Applications Using Services

Имея миллионы пользователей потребует некоторой оптимизации, например, мы используем CacheRolesInCookie, как описано в статье

0

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

0

Ввод ключевых слов в строку запроса - это очень плохо Плохая идея. Если я знаю, какое ключевое слово использовать, чтобы стать администратором, я могу подделать себе права администратора? Если пользователь зарегистрирован, вы можете поместить свои учетные данные в сеанс или cookie (я предпочитаю сессию, потому что файлы cookie могут быть изменены на стороне клиента), что может сэкономить вам много запросов БД (я не знаю какой-либо системы, которая продолжает обновлять ваши учетные данные, насколько я знаю, даже Windows кэширует их, когда вы находитесь в Active Directory).

Если вы боитесь, что поиск имени пользователя в таблице займет много времени, вы должны оптимизировать таблицу базы данных. Поместите индекс в имена пользователей (или используйте его как первичный ключ), и вы не столкнетесь с проблемами производительности при поиске имен пользователей (также при выполнении многих поисков на имени пользователя SQL-сервер будет пытаться самостоятельно его оптимизировать).

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

Смежные вопросы