Add session identity
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
"""Identity polocy for storing info directly into HTTP cookie.
|
||||
|
||||
Use mostly for demonstration purposes, SessionIdentityPolicy is much
|
||||
more handy.
|
||||
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
|
||||
from .abc import AbstractIdentityPolicy
|
||||
|
35
aiohttp_security/session_identity.py
Normal file
35
aiohttp_security/session_identity.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""Identity policy for storing info into aiohttp_session session.
|
||||
|
||||
aiohttp_session.setup() should be called on application initialization
|
||||
to conffigure aiohttp_session properly.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
|
||||
from aiohttp_session import get_session
|
||||
|
||||
from .abc import AbstractIdentityPolicy
|
||||
|
||||
|
||||
sentinel = object()
|
||||
|
||||
|
||||
class SessionIdentityPolicy(AbstractIdentityPolicy):
|
||||
|
||||
def __init__(self, session_key='AIOHTTP_SECURITY'):
|
||||
self._session_key = session_key
|
||||
|
||||
@asyncio.coroutine
|
||||
def identify(self, request):
|
||||
session = yield from get_session(request)
|
||||
return session.get(self._session_key)
|
||||
|
||||
@asyncio.coroutine
|
||||
def remember(self, request, response, identity, **kwargs):
|
||||
session = yield from get_session(request)
|
||||
session[self._session_key] = identity
|
||||
|
||||
@asyncio.coroutine
|
||||
def forget(self, request, response):
|
||||
session = yield from get_session(request)
|
||||
session.pop(self._session_key, None)
|
Reference in New Issue
Block a user