Skip to main content

Browser-aware multi-cookie flask session

Project description

Browser-aware flask session manager.

This module allows you to store any amount of data on session cookies without caring about browser-specific cookie limitations, by just registering session data shrink functions.

This module probably won’t play nicely with other cookies set on the same domain: session-cookie could be evicted at any time because other cookies and vice versa.

How it works

This module includes a simple browser cookie limit database, which is matched against flask request’s user agent and, on flask response, that information is used to serialize the session onto cookies.

This session implementation supports cookie signatures, multi-cookie session, and custom session shrinking logic which will be invoked when needed.

The session shrinking logic repeat this steps in order until session data fits into cookies:

  1. Registered shrinking functions, until they’re unable to reduce the cookie size.

  2. Unhandled keys are removed.

  3. Registered shrinking functions, now receiving True as parameter last.

  4. Remaining keys are removed.

Usage

This module works as a flask session interface, allowing to register session shrink functions which will be called once session does not fit on browser cookies.

import flask
import cookieman

app = flask.Flask(__name__)
app.session_interface = cookieman.CookieMan()
app.secret_key = 'my_app_secret_key'  # used for session cookie safety

@app.session_interface.register('a')
def shrink_a(data, last):
    '''
    Session property 'a' shrinking policy: remove last list item on key
    or just remove key.

    :param data: session data as dict
    :type data: Mapping[str, Any]
    :param last: wether is last iteration or not
    :type last: bool
    :returns: updated data (can be the same as received)
    :rtype: Mapping[str, Any]
    '''
    if len(data['a']) < 2:
        del data['a']
    else:
        data['a'].pop()
    return data

License

MIT (see LICENSE file).

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

cookieman-0.0.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

cookieman-0.0.1-py2.py3-none-any.whl (18.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file cookieman-0.0.1.tar.gz.

File metadata

  • Download URL: cookieman-0.0.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for cookieman-0.0.1.tar.gz
Algorithm Hash digest
SHA256 ba2c82fdfd9925a38faab230b4b3d489c2dd49332cbe67aa90492b1836c1d7e0
MD5 dec5b9c4c452b329dfb95c404fdd8302
BLAKE2b-256 cd8048707c7a27f66e931313b3a58bfe6496a0ef72d1bcef64dbae4948f43e23

See more details on using hashes here.

File details

Details for the file cookieman-0.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: cookieman-0.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for cookieman-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7f0b536a714d1fd806976843ea42b1f4b446b96295eba4a430b2fde7e2af9b4e
MD5 251955d29747ad8cae3c66f70cfd8249
BLAKE2b-256 35dfe51764ed0990385b5dab9fe804e9646bcd76a97f6876251d5602fec3d4cb

See more details on using hashes here.

Supported by

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