2010-01-02 5 views
1

У меня проблема, я пытаюсь решить как можно более гладкую, а также сохранить ее максимально безопасной и гибкой!Несколько методов проверки подлинности или реализация аутентификации на основе ролей?

У меня есть веб-приложение, где у меня есть 2 вида пользователей; Конечные пользователи (доверенные пользователи, администраторы!) И клиенты (конечные пользователи, которым не доверяют одинаково)! Они работают с некоторыми из тех же данных в базе данных, но клиенты могут выполнять только часть того, что могут сделать конечные пользователи Backdoor (например, пользователи Salesforce и клиенты «Портал самообслуживания»)!

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

Должен ли я реализовать это с помощью двух разных методов проверки подлинности или использовать один метод проверки подлинности и вместо этого использовать роли (тогда я бы пропустил наличие 2 таблиц в базе данных с именем пользователя и паролем и разрешил бы все использовать таблицу User)?

ответ

1

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

CREATE TABLE user (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(120), 
    created_ts DATETIME DEFAULT '0000-00-00 00:00:00' 
); 

CREATE TABLE user_role (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    user_id INT(11) UNSIGNED NOT NULL, 
    role_id INT(11) UNSIGNED NOT NULL 
); 

CREATE TABLE role (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(125) 
); 
1

Я бы предложил вам использовать один стол и просто настроить роли. Если это будет сделано правильно, это будет легче поддерживать. Конечно, это так, если у них есть общие поля, такие как имя, фамилия.

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