мета-данные страницы
Константы
| Имя | Значение | Описание |
|---|---|---|
SESSION_TIMEOUT | 86400 | Продолжительность сессии пользователя в секундах |
Исключения
| Имя | Предок | Описание |
|---|---|---|
IDError | aw_web_tools.Error | Общий класс ошибок идентификации |
IDCheckError | IDError | Ошибка проверки ID |
IDNotFound | IDCheckError | Запрос не идентифицирован |
UIDError | IDError | Ошибки при работе с классом пользовательского идентификатора |
Классы объектов
UID
Класс пользовательского идентификатора.
Обеспечивает хранение идентификационной информации о пользователе.
Свойства объекта
| Свойство | Описание |
|---|---|
name | Имя пользователя |
level | Заданный пользователю уровень допуска |
sess_id | Заданный ID сессии работы с системой |
Конструктор
UID(uname, [acc_level], [sess_id], [acc_tags], [user_meta])
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
uname | str | – | Имя пользователя внутри системы |
acc_level | int | -1 | Уровень допуска пользователя. Интерпретация целиком на стороне приложения. |
sess_id | str | None | Идентификатор сессии пользователя |
acc_tags | Iterable[str] | None | Строковые константы, определяющие конкретное множество доступных пользователю ресурсов. Интерпретация целиком на стороне приложения. |
user_meta | Dict[str, str] | None | Иная полезная приложению информация, сохранённая в виде тег-значение |
Преобразование в строку
При вызове
str(obj)
Значением будет имя пользователя.
get_access()
Получить теги доступа, заданные параметром acc_tags конструктора.
obj.get_access()
Возвращает: Список тегов доступа либо пустой список, если их не заданно.
get_meta()
Получить словарь метаинформации о пользователе, заданной параметром user_meta конструктора.
obj.get_meta()
Возвращает: Словарь с мета-информацией либо пустой словарь, если она не заданна.
to_dict()
Создаёт словарь на основе объекта. Словарь получается следующей структуры:
n: obj.name, id: obj.sess_id al: obj.level a: obj.get_access() m: obj.get_meta()
IDHelper
Класс поддержки идентификации. Может выступать в качестве плагина bottle, а также декорировать методы обработки url данного фреймворка.
Конструктор
IDHelper(app_name, sign_secret, [sess_timeout])
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
app_name | str | – | Имя приложения. Допускаются цифры символы латиницы и знак -, остальное запрещено |
sign_secret | str | – | Ключ подпись JWT для построения cookie |
sess_timeout | int | SESSION_TIMEOUT | Время жизни сессии пользователя |
make_cookie()
Формирует объект Cookie для идентификации сессии пользователя.
obj.make_cookie([uid], [request], [is_secure], [is_httponly])
Возвращает: Объект Cookie, на основе данного UID.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
uid | UID | None | UID на основе которого формируется cookie. Если не задано (None) берётся из контекста запроса |
request | bottle.BaseRequest | bottle.request | Экземпляр запроса, на основании которого формируется ответ. |
is_secure | bool | True | Установить признак secure на cookie |
is_httponly | bool | True | Установить признак httponly на cookie |
Имя cookie при этом имеет вид:
X-ID-${obj.app_name}
То есть строится на основе имени приложения, заданного при создании объекта
set_id()
Установка cookie на ответ пользователю
obj.set_id([uid], [response], [request], [is_secure], [is_httponly])
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
uid | UID | None | UID на основе которого формируется cookie. Если не задано (None) берётся из контекста запроса |
response | bottle.BaseResponse | bottle.response | Объект ответа, на который устанавливаем cookie. |
request | bottle.BaseRequest | bottle.request | Экземпляр запроса, на основании которого формируется ответ. |
is_secure | bool | True | Установить признак secure на cookie |
is_httponly | bool | True | Установить признак httponly на cookie |
env_id()
Получаем ID из контекста запроса (для случая, когда проверка и валидация ID проведена на уровне плагина или декоратора
Метод статический
IDHelper.env_id([request])
Возвращает: Объект UID, связанный с данным запросом, или возбуждает IDNotFound, если он не задан.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
request | bottle.BaseRequest | bottle.request | Экземпляр обрабатываемого запроса. |
need_id()
Декоратор для проверки UID для заданного пути в приложении.
app = bottle.Bottle() id_helper = IDHelper('some_name', 'some Very $ecr3t K3y') @id_helper.need_id @app.get('/resource'): pass