Skip to main content

A library for backend side session with starlette

Project description

Test Package version Code coverage


Documentation: https://auredentan.github.io/starlette-session/


Starlette Session

Starlette session is a simple session middleware for starlette that enable server side session with starlette.

Requirements

Python 3.6+

Installation

pip install starlette-session

Example

Using redis as backend

from starlette.applications import Starlette
from starlette.requests import Request
from starlette.responses import JSONResponse
from starlette.routing import Route

from starlette_session import SessionMiddleware
from starlette_session.backends import BackendType

from redis import Redis

async def setup_session(request: Request) -> JSONResponse:
    request.session.update({"data": "session_data"})
    return JSONResponse({"session": request.session})


async def clear_session(request: Request):
    request.session.clear()
    return JSONResponse({"session": request.session})


def view_session(request: Request) -> JSONResponse:
    return JSONResponse({"session": request.session})


routes = [
    Route("/setup_session", endpoint=setup_session),
    Route("/clear_session", endpoint=clear_session),
    Route("/view_session", endpoint=view_session),
]

redis_client = Redis(host="localhost", port=6379)
app = Starlette(debug=True, routes=routes)
app.add_middleware(
    SessionMiddleware,
    secret_key="secret",
    cookie_name="cookie22",
    backend_type=BackendType.redis,
    backend_client=redis_client,
)

You can find more example here

Using a custom backend

You can provide a custom backend to be used. This backend has simply to implement the interface ISessionBackend

class ISessionBackend(ABC):
    @abstractmethod
    async def get(self, key: str) -> Optional[dict]:
        raise NotImplementedError()

    @abstractmethod
    async def set(self, key: str, value: dict, exp_in_mins: str) -> Optional[str]:
        raise NotImplementedError()

    @abstractmethod
    async def delete(key: str) -> Any:
        raise NotImplementedError()

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

starlette_session-0.4.3.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

starlette_session-0.4.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file starlette_session-0.4.3.tar.gz.

File metadata

  • Download URL: starlette_session-0.4.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/5.15.0-1022-azure

File hashes

Hashes for starlette_session-0.4.3.tar.gz
Algorithm Hash digest
SHA256 5b50a1c91a2ca1cf594574c0b386eea5dbed140dcb397ee73f0c43956bd2bfcc
MD5 4a0713aaa68878a7a0faa448d37e0fb9
BLAKE2b-256 0a76e973d473cfabcce37d8bc3832de51f0b22dd29d49d41ce58ec6e7daadc9b

See more details on using hashes here.

File details

Details for the file starlette_session-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: starlette_session-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.8 Linux/5.15.0-1022-azure

File hashes

Hashes for starlette_session-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bfc2559ec0fec566b44865f20d1c4262b1132de867a936abe8771cf139cbbe0b
MD5 77271041f432161ef95b90f71bdf3b37
BLAKE2b-256 45fdeaff58a14a6b7a2dccd4ec6c82883bde5fcd9b256065c9e24423b8f33a12

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