Исходный код ssosp.backends.cache

#coding:utf-8
u"""
Кэш-бэкенд хранения соответствия сессий
"""
from django.core.cache import cache
from ssosp.backends.base import BaseSSOSessionMap
from ssosp.settings import get_sso_setting


SSO_KEY_PREFIX = "ssosessionmap.cache.sso"
DJANGO_KEY_PREFIX = "ssosessionmap.cache.django"


[документация]class SSOSessionMap(BaseSSOSessionMap): u""" Кэш-бэкенд хранения соответствия сессий """ def __init__(self): self._cache = cache self._timeout = int(get_sso_setting('cache_timeout')) super(SSOSessionMap, self).__init__() def get_django_session_key(self, sso_session_key): try: django_session_key = self._cache.get(SSO_KEY_PREFIX + sso_session_key, None) except Exception: django_session_key = None return django_session_key def get_sso_session_key(self, django_session_key): try: sso_session_key = self._cache.get(DJANGO_KEY_PREFIX + django_session_key, None) except Exception: sso_session_key = None return sso_session_key def exists_sso_session(self, sso_session_key): key = SSO_KEY_PREFIX + sso_session_key return key in self._cache def exists_django_session(self, django_session_key): key = DJANGO_KEY_PREFIX + django_session_key return key in self._cache def set_session_map(self, sso_session_key, django_session_key): if self.exists_sso_session(sso_session_key): self.delete_by_sso_session(sso_session_key) self._cache.add(SSO_KEY_PREFIX + sso_session_key, django_session_key, timeout=self._timeout) self._cache.add(DJANGO_KEY_PREFIX + django_session_key, sso_session_key, timeout=self._timeout) def delete_by_sso_session(self, sso_session_key): django_session_key = self.get_django_session_key(sso_session_key) self._cache.delete(SSO_KEY_PREFIX + sso_session_key) if django_session_key is not None: self._cache.delete(DJANGO_KEY_PREFIX + django_session_key) def delete_by_django_session(self, django_session_key): sso_session_key = self.get_sso_session_key(django_session_key) self._cache.delete(DJANGO_KEY_PREFIX + django_session_key) if sso_session_key is not None: self._cache.delete(SSO_KEY_PREFIX + sso_session_key)