Skip to main content

Expiry rules for Django sessions.

Project description

django-expiry

Expiry rules for Django sessions.

Installation

Install using pip

pip install django-expiry

Add expiry to your INSTALLED_APPS setting

INSTALLED_APPS = (
    ...
    'expiry',
)

Add expiry.middleware.ExpirySessionMiddleware to your middleware setting

MIDDLEWARE = (
    ...
    'expiry.middleware.ExpirySessionMiddleware',
)

Or to middleware classes if your Django is >= 1.10

MIDDLEWARE_CLASSES = (
    ...
    'expiry.middleware.ExpirySessionMiddleware',
)

The middleware will process rules and default ages for fresh sessions.

Usage

Ages

Default ages can be set for anonymous and authenticated users. When not set, the session age behaviour will default to Django.

EXPIRY_ANON_SESSION_AGE
Default: not set.

The default age of an anonymous session, in seconds.

EXPIRY_ANON_KEEP_ALIVE
Default: False

Keeps the authenticated session alive, refreshing its expiry for every request, according to its default value and rules.

EXPIRY_AUTH_SESSION_AGE
Default: not set.

The default age of an authenticated session, in seconds.

EXPIRY_AUTH_KEEP_ALIVE
Default: False

Keeps the anonymous session alive, refreshing its expiry for every request, according to its default value and rules.

Rules

A set of rules should be defined in your settings file. You can have rules for anonymous users and authenticated users, handled separately.

Expiry rules for authenticated users only

Processed whenever an user logs in. Its callable should always accept an user and a request object.

EXPIRY_AUTH_SESSION_RULES = (
    (lambda request, user: user.is_staff, 300),
    (lambda request, user: user.is_superuser, datetime.timedelta(weeks=2)),
    (lambda request, user: user.has_perms('hero'), 99999999),
)

Expiry rules for anonymous users only

Processed whenever a session is

EXPIRY_ANON_SESSION_RULES = (
    (lambda request: request.META.get('REMOTE_ADDR') == '192.168.0.1', 999)
)

Rule composition

A rule is a tuple composed by:

  • A callable or the path to a callable that will validate it
  • An expiry (seconds, datetime, timedelta)

In the examples, all rules are lambdas, but you can also send the path to a function that will validate it. For example:

EXPIRY_AUTH_SESSION_RULES = (
    ('app.module.complex_rule', datetime.timedelta(days=64)),
)

Then define the rule in that specific module:

def complex_rule(user, request):
    ...

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

django-expiry-0.1.0.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_expiry-0.1.0-py2-none-any.whl (4.4 kB view details)

Uploaded Python 2

File details

Details for the file django-expiry-0.1.0.tar.gz.

File metadata

  • Download URL: django-expiry-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/2.7.15

File hashes

Hashes for django-expiry-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2640df8e03c262c9c8f55e3c686a418d951bdc97ae4e4c921dc61881043e6184
MD5 fa20d7b77d260f204a4b88bf3e380765
BLAKE2b-256 482b2914fbb0de8de17cda6db1494a6c3ab4f8d5221c9ebb25fd14bfea9d1e34

See more details on using hashes here.

File details

Details for the file django_expiry-0.1.0-py2-none-any.whl.

File metadata

  • Download URL: django_expiry-0.1.0-py2-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/2.7.15

File hashes

Hashes for django_expiry-0.1.0-py2-none-any.whl
Algorithm Hash digest
SHA256 7d0dd9e6bd2b23ce1bdeb67930eb7dcd31d70ae0d49089d43d5a2d453369f39c
MD5 2552be8517869385ced5986c4c498b10
BLAKE2b-256 6e7b777ce23955c23f3a40b2ec2986d423ac6ece43a3aa5a3707324105a57431

See more details on using hashes here.

Supported by

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