Как незаметно определить тип учетной записи пользователя при входе в систему?

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

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

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

Мои цели, чтобы иметь:

  1. все типы учетных записей пользователей (3+) входят в веб-приложение через одну и ту же форму,
  2. нет необходимости в каком-либо видимом идентификаторе типа учетной записи пользователя, например, в форматировании имени пользователя,
  3. максимально безопасный «невидимый» идентификатор типа учетной записи пользователя.

Одно решение, о котором я подумал, это: хеширование паролей по-разному для каждого типа учетной записи пользователя, но с некоторой константой в хэше, которую можно прочитать при входе в систему, чтобы определить тип учетной записи пользователя, что затем указывает процесс входа в систему на правильный db для этого пользователя, но для этого потребуется какая-то константа в хешированном выводе... и я застрял. Я на правильном пути?

Кто-нибудь знает сценарий/инструкцию/или статью, которая где-то описывает такой процесс? Это должно использоваться во многих текущих веб-приложениях.

Спасибо


person UserAccountTypes    schedule 09.03.2011    source источник
comment
Почему вы хотите иметь разные таблицы для разных типов учетных записей? Вы можете иметь одну таблицу с флагом, чтобы сказать, что это за учетная запись.   -  person Gabe    schedule 09.03.2011


Ответы (1)


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

Таблица «Пользователи» будет ссылаться либо на администратора, либо на веб-пользователя и т. д., а любая «общая» функциональность (например, вход в систему, журналы, блокировка записей) будет ссылаться на общую таблицу «Пользователи».

Затем из записи пользователей вы можете определить тип учетной записи и решить, что они могут/не могут делать.

Однако я должен подчеркнуть, что это происходит только потому, что структура этих таблиц настолько различна, что они не могут храниться все в одной таблице. Если, например, отличается только 1 столбец, вам не нужно делать все это.

person cusimar9    schedule 09.03.2011