MyWackoSite: NsuTs/Вам запрещён доступDocumentation/devguide/authorization ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

Аутентификация

В настоящее время система аутентификации/авторизации выглядит следующим образом.
Для аутентификации пользователя используются три поля таблица users: “login”, “password”, “email”.
Пользователь однозначно определяется парой значений login+password (при входе в систему) или парой login+email (при восстановлении пароля).
При входе в систему из таблицы users выбираются все строки, соответствующие заданными значениям login+password и пользователь может зайти в одну из соответствующих олимпиад.
Для того, чтобы иметь возможность заходить в новую олимпиаду, необходимо в ней зарегистрироваться на странице регистрации, при этом указать те же логин и пароль.
Проблем две:
  1. необходимо заново заполнять информацию о себе
  2. пользователь может случайно зарегистрировать пару login+password, которая ему не принадлежит (?!)
Восстановление пароля.
Для восстановления пароля необходима привелегия p_registrationmanage. Таким образом, если пользователь зарегистрирован на несколько олимпиад, то он сможет восстановить пароль только на те, в которых он имеет p_registrationmanage. (bug 787)
На самом деле сложности возникают из-за того, что фактически есть два вида пользователей:
  1. Жюри и участники тренировок
  2. «Одноразовые» участники олимпиад.
Первые регистрируются на несколько олимпиад самостоятельно, вторых заводят автоматически (как правило). Отсюда все различия, в том числе и запрет на смену пароля.
В качестве решения можно предложить следующий вариант.
Хранить всю информацию о пользователе (login+password+email) в одной таблице (напр. users), всю информацию привязывающую пользователя к олимпиаде (напр, учебное заведение, паспортные данные и пр.) в другой.
Далее, логины сделать уникальными в пределах первой таблицы, и запрещать регистрировать пользователя на уже существующий в системе логин.
В интерфейсе пользователя добавить возможность регистрироваться на олимпиады (в которые открыта регистрация), при этом пользователь заполняет только необходимую для целевой олимпиады информацию (без логина, пароля и email'а).
Возможность восстановления пароля открыть для всех, а доступ к олипмиаде для пользователей «второго типа» регулировать явным образом (запрещать доступ пользователям без привелегии admin, например используя заморозку олимпиад).
Таким образом, в результате пользователя можно будет явно идентифицировать по логину.

Проверка прав доступа


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]