![]() |
|||
![]() |
![]() |
![]() |
|
![]() |
|
Таблица users_permsНазначение таблицы:В таблице users_perms хранятся авторизационные разрешения для всех пользователей.
Авторизационные разрешения всегда проходят через сервер, который сохраняет их
в данной таблице, чтобы в следующий раз клиенту не требовалось разрешение
на повторное добавление контакта в SSI. Также это дает возможность авторизировать
добавление контакта заранее без запроса (фьючерная авторизация).
Создание таблицы: Таблица создается сервером или утилитой при помощи запроса SQL. Прототип
запроса находится в модуле database\init_db.h CREATE TABLE Users_Perms (uin float8, tuin float8, type int2); Таблица содержит групповой индекс на поля uin,tuin,type для ускорения работы
запросов выборки и сохранения целостности данных. Индекс создается следующим
образом: CREATE UNIQUE INDEX uperm_ind ON Users_Perms (uin,tuin,type); Авторизация: Процесс авторизации в SSI выглядит немного иначе чем в обычных клиентах. Здесь авторизация дается только один раз. Клиент сначала пытается добавить пользователя без всяких проверок авторизации и если авторизация требуется - сервер выдается ошибку. После чего SSI запись добавляется с TLV(66) в качестве признака того, что данная запись ожидает авторизации и после этого отправляется авторизационный запрос. Авторизация дается клиентом, который посылает специальный SSI пакет через сервер. Сервер при получении этого пакета добавляет запись в таблицу Users_Perms и отправляет сообщение об авторизации адресату, который при получении уведомления просто перекидывает пользователя из группы "Awaiting authorization" в группу обычных пользователей (сервер сам удаляет TLV(66)). Данная схема дает возможность для так называемоей фьючерной авторизации. В официальных клиентах например при добавлении пользователя можно поставить галочку и дать авторизацию клиенту до того как он ее попросит (просить ее он конечно после этого не будет). |
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
Webmaster А.В.Шутко |
![]() |
![]() |