Skip to main content

sessions for aiohttp.web

Project description

aiohttp_session

The library provides sessions for aiohttp.web.

Usage

The library allows to store user-specific data into session object.

The session object has dict-like interface (operations like session[key] = value, value = session[key] etc. are present).

Before processing session in web-handler you have to register session middleware in aiohttp.web.Application.

A trivial usage example:

import asyncio
import time
from aiohttp import web
from aiohttp_session import get_session, session_middleware
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(middlewares=[session_middleware(
        EncryptedCookieStorage(b'Sixteen byte key'))])
    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

All storages uses HTTP Cookie named AIOHTTP_COOKIE_SESSION for storing data.

Available session storages are:

  • aiohttp_session.SimpleCookieStorage() – keeps session data as plain JSON string in cookie body. Use the storage only for testing purposes, it’s very non-secure.

  • aiohttp_session.cookie_storage.EncryptedCookieStorage(secret_key) – stores session data into cookies as SimpleCookieStorage but encodes it via AES cipher. secrect_key is a bytes key for AES encryption/decryption, the length should be 16 bytes.

    Requires PyCrypto library:

    $ pip install aiohttp_session[pycrypto]
  • aiohttp_session.redis_storage.RedisStorage(redis_pool) – stores JSON-ed data into redis, keepeng into cookie only redis key (random UUID). redis_pool is aioredis pool object, created by yield from aioredis.create_pool(...) call.

    Requires aioredis library:

    $ pip install aiohttp_session[aioredis]

License

aiohttp_session is offered under the Apache 2 license.

Changes

0.1.1 (2015-04-20)

  • Fix #7: stop cookie name growing each time session is saved

0.1.0 (2015-04-13)

  • First public release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiohttp_session-0.1.2.tar.gz (88.8 kB view details)

Uploaded Source

Built Distribution

aiohttp_session-0.1.2-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file aiohttp_session-0.1.2.tar.gz.

File metadata

File hashes

Hashes for aiohttp_session-0.1.2.tar.gz
Algorithm Hash digest
SHA256 499a3f39e7fa7d3065ee9a41ad06b70d04bb882d339c9e93fd5688519f54575a
MD5 da138728263e1b3b52ac56d8faf749fa
BLAKE2b-256 c847ff2f92d3fce757be95f59f48dda246675d1f566a10b76bb6cd4dadb092bc

See more details on using hashes here.

Provenance

File details

Details for the file aiohttp_session-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohttp_session-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a1cfe9845e6afdd346bc07b329813595abb07afbe9836bcdb927ce6c4b69b2f5
MD5 6c6f843df3e6e8f68a6f368d8ea20960
BLAKE2b-256 249cf16916ba84d6589ca9e850a34c906bd93a7497ee215334c28bd4300c1584

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page