Fixes in sessions
This commit is contained in:
parent
c42128b4a7
commit
6cffc09371
3 changed files with 58 additions and 8 deletions
|
|
@ -125,6 +125,7 @@ def csrf_token(token_id='csrf_token'):
|
||||||
|
|
||||||
#if not 'csrf_token' in s:
|
#if not 'csrf_token' in s:
|
||||||
s['csrf_token']=create_key_encrypt()
|
s['csrf_token']=create_key_encrypt()
|
||||||
|
|
||||||
#s.save()
|
#s.save()
|
||||||
|
|
||||||
return '<input type="hidden" name="csrf_token" class="csrf_token" id="'+token_id+'" value="'+s['csrf_token']+'" />'
|
return '<input type="hidden" name="csrf_token" class="csrf_token" id="'+token_id+'" value="'+s['csrf_token']+'" />'
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from paramecio.libraries.keyutils import create_key_encrypt
|
||||||
from bottle import HTTPResponse
|
from bottle import HTTPResponse
|
||||||
|
|
||||||
no_csrf=False
|
no_csrf=False
|
||||||
change_csrf=False
|
change_csrf=True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
|
@ -84,15 +84,22 @@ class GetPostFiles:
|
||||||
|
|
||||||
self.post={}
|
self.post={}
|
||||||
|
|
||||||
try:
|
if not request.json:
|
||||||
|
|
||||||
self.post=request.forms.decode('utf-8')
|
try:
|
||||||
|
|
||||||
except:
|
self.post=request.forms.decode('utf-8')
|
||||||
|
|
||||||
request.forms.recode_unicode=False
|
except:
|
||||||
self.post=request.forms.decode('utf-8')
|
|
||||||
|
request.forms.recode_unicode=False
|
||||||
|
self.post=request.forms.decode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.post=request.json
|
||||||
|
|
||||||
|
#print(self.post.keys())
|
||||||
if len(required_post)==0:
|
if len(required_post)==0:
|
||||||
required_post=self.post.keys()
|
required_post=self.post.keys()
|
||||||
|
|
||||||
|
|
@ -111,7 +118,7 @@ class GetPostFiles:
|
||||||
|
|
||||||
# Clean csrf_token
|
# Clean csrf_token
|
||||||
|
|
||||||
del s['csrf_token']
|
#del s['csrf_token']
|
||||||
|
|
||||||
#s.save()
|
#s.save()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,48 @@ def get_session():
|
||||||
|
|
||||||
return request.environ.get('session', {})
|
return request.environ.get('session', {})
|
||||||
|
|
||||||
|
def session_plugin(callback):
|
||||||
|
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
|
||||||
|
cookie=request.get_cookie(config.cookie_name)
|
||||||
|
|
||||||
|
safe=None
|
||||||
|
|
||||||
|
if not cookie:
|
||||||
|
session=Session()
|
||||||
|
else:
|
||||||
|
|
||||||
|
safe=URLSafeTimedSerializer(config.key_encrypt)
|
||||||
|
try:
|
||||||
|
session=Session(safe.loads(cookie))
|
||||||
|
|
||||||
|
if type(session).__name__!='Session':
|
||||||
|
session=Session()
|
||||||
|
|
||||||
|
except:
|
||||||
|
session=Session()
|
||||||
|
|
||||||
|
kwargs['session']=session
|
||||||
|
|
||||||
|
#For compatibility with old sessions server-side style.
|
||||||
|
|
||||||
|
request.environ['session']=session
|
||||||
|
|
||||||
|
rv=callback(*args, **kwargs)
|
||||||
|
|
||||||
|
if session.changed:
|
||||||
|
print('changed')
|
||||||
|
if not safe:
|
||||||
|
safe=URLSafeTimedSerializer(config.key_encrypt)
|
||||||
|
|
||||||
|
#if not max_age:
|
||||||
|
response.set_cookie(config.cookie_name, safe.dumps(session), path=config.session_opts['session.path'], httponly=True)
|
||||||
|
|
||||||
|
return rv
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
class SessionPlugin(object):
|
class SessionPlugin(object):
|
||||||
|
|
||||||
name = 'session'
|
name = 'session'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue