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:
|
||||
s['csrf_token']=create_key_encrypt()
|
||||
|
||||
#s.save()
|
||||
|
||||
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
|
||||
|
||||
no_csrf=False
|
||||
change_csrf=False
|
||||
change_csrf=True
|
||||
|
||||
try:
|
||||
|
||||
|
|
@ -84,15 +84,22 @@ class GetPostFiles:
|
|||
|
||||
self.post={}
|
||||
|
||||
try:
|
||||
if not request.json:
|
||||
|
||||
self.post=request.forms.decode('utf-8')
|
||||
try:
|
||||
|
||||
except:
|
||||
|
||||
request.forms.recode_unicode=False
|
||||
self.post=request.forms.decode('utf-8')
|
||||
self.post=request.forms.decode('utf-8')
|
||||
|
||||
except:
|
||||
|
||||
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:
|
||||
required_post=self.post.keys()
|
||||
|
||||
|
|
@ -111,7 +118,7 @@ class GetPostFiles:
|
|||
|
||||
# Clean csrf_token
|
||||
|
||||
del s['csrf_token']
|
||||
#del s['csrf_token']
|
||||
|
||||
#s.save()
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,48 @@ def 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):
|
||||
|
||||
name = 'session'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue