aiohttp_session usage

aiohttp_session

Библиотека предоставляет возможность использовать сессии в aiohttp.web.

Использование

Библиотека позволяет хранить пользовательские данные в объекте сессии. Объект сессии имеет интерфейс подобный словарю (dict-подобный). Перед использованием сессий в веб-обработчике Вы должны зарегистрировать промежуточный слой сессий в Вашем приложении [1].
Простой пример ииспользования:
import asyncio
import time
from aiohttp import web
from aiohttp_session import get_session, setup
from aiohttp_session.cookie_storage import EncryptedCookieStorage

@asyncio.coroutine
def handler(request):
    session = yield from get_session(request)
    session['last_visit'] = time.time()
    return web.Response(body=b'OK')

@asyncio.coroutine
def init(loop):
    app = web.Application()
    setup(app,
        EncryptedCookieStorage(b'Ключ длиною в 32 байта')) # 1
    app.router.add_route('GET', '/', handler)
    srv = yield from loop.create_server(
        app.make_handler(), '0.0.0.0', 8080)
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
try:
    loop.run_forever()
except KeyboardInterrupt:
    pass
Для хранения данных хранилища используют HTTP куки с именем AIOHTTP _COOKIE _SESSION.
Доступные хранилища сессии:
  • SimpleCookieStorage - хранит данные сессии в качестве простой строки JSON в теле куки. Используйте его только в целях тестирования, так как это очень небезопасно.
  • EncryptedCookieStore — хранит данные сессии в куки также как и SimpleCookieStorage, но данные кодируются криптографическим шифром Fernet. Для генерации ключа используйте метод cryptography.fernet.Fernet.generate_key().
    Требуется библиотека:
    $ pip install aiohttp_session[secure]
  • RedisStorage - сохраняет JSON-данных в Redis. В куки хранится только ключ (случайный UUID).
    Требуется библиотека:
    $ pip install aiohttp_session[aioredis]

Установка

pip3 install aiohttp_session

Код библиотеки

Проект размещен на GitHub. Пожалуйста, если Вы нашли баг или у Вас есть предложения, не стесняйтесь писать в багтрекер. Библиотека использует Travis для непрерывной интеграции.

Зависимости

  • Python 3.3 и asyncio или Python 3.4+

Лицензия

Apache 2

Комментариев нет:

Отправить комментарий