diff options
Diffstat (limited to 'session.py')
-rw-r--r-- | session.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/session.py b/session.py new file mode 100644 index 0000000..9928992 --- /dev/null +++ b/session.py @@ -0,0 +1,19 @@ +import Cookie, hashlib, time + +class Session(object): + def __init__(self, func): + self.func = func + + def __call__(self, app, environ, start_response, path): + cookie = Cookie.SimpleCookie(environ['HTTP_COOKIE'] if 'HTTP_COOKIE' in environ else None) + sessionid = cookie.get('sessionid') + if not sessionid: + sessionid = hashlib.sha1(str(time.time) + environ['REMOTE_ADDR']).hexdigest() + cookie['sessionid'] = sessionid + start_response('302 Found', [ + ('Set-Cookie', cookie['sessionid'].OutputString()), + ('Location', environ['REQUEST_URI'])]) + return [] + environ['sessionid'] = sessionid.value + + return self.func(app, environ, start_response, path) |