Skip to main content

A server-side secure sessions plugin for Sanic

Project description

Gotta get your sessions fast!
=============================

Cookie-based sessions are still a common way to track users's sessions.
Flask and Django have really good support for server-side sessions, but not Sanic yet.
So `sanic-secure-session` is an attempt to create a simple yet enough secure session support for Sanic.

* Server-side sessions (currently only Redis backend implemented)
* Signed session cookie (sure, using `itsdangerous`)
* Easily extensible backends (only serialization and storage-related logic there)

## Usage example


```python
from datetime import timedelta

import asyncio_redis
from sanic import Sanic
from sanic.response import text

from sanic_secure_session import SanicSession
from sanic_secure_session.backends.redis import RedisStorageBackend


class RedisPool:
"""
A simple wrapper class that allows you to share a connection
pool across your application.
"""
_pool = None

async def get_pool(self):
if not self._pool:
self._pool = await asyncio_redis.Pool.create(
host='localhost', port=6379, poolsize=10
)

return self._pool


redis_pool = RedisPool()

storage_backend = RedisStorageBackend(redis_connection=redis_pool.get_pool)

app = Sanic()
SanicSession(app, secret_key='aeNgaif6Ieyishoh', storage_backend=storage_backend,
ttl=timedelta(minutes=1), http_only=True, secure=True)


@app.route("/")
async def index(request):
# interact with the session like a normal dict
if not request['session'].get('foo'):
request['session']['foo'] = 0

request['session']['foo'] += 1

return text({
'cookies': request.cookies,
'session': request['session']
})


if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000, debug=True)

```




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

sanic-secure-session-0.2.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

sanic_secure_session-0.2.1-py2.py3-none-any.whl (5.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file sanic-secure-session-0.2.1.tar.gz.

File metadata

File hashes

Hashes for sanic-secure-session-0.2.1.tar.gz
Algorithm Hash digest
SHA256 be8ffe8ded402dd55d71e1cae9fca9ac168e60087294de4b37e85f065d0d2dc6
MD5 32cc3d00b2e494ca6abfafd1769b87bc
BLAKE2b-256 a6dcc6a79f86988bc1df3e98e7f51c7e3fa26d2d025d98cd30444f49df00adf5

See more details on using hashes here.

File details

Details for the file sanic_secure_session-0.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for sanic_secure_session-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 73e7ae180b25f833f2d32ad98386e73621b89717bb4fd6d1cd52cae4ab2b0bf3
MD5 16ef25a10c1d2b008bdf8462c540cf61
BLAKE2b-256 b00f129ea1c208ace2d1bfac1e1560743354ddc344c25602b09a4ef738d37a26

See more details on using hashes here.

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