Единственное решение, которое я придумаю, - это реализовать свой собственный маленький бэкэнд и устанавливать файлы cookie самостоятельно, без мензурки.
Для потомков код здесь: https://github.com/paulbarbu/bottle-upload/blob/master/index.py Методы: login_bl
, upload_view(db)
, is_logged_in
и logout()
.Обратите внимание, что это ОЧЕНЬ старый код и НЕ готов к работе, используйте на свой страх и риск, некоторые фрагменты кода по вышеуказанной ссылке:
Логин:
@post('/login')
def login_bl(db):
import hashlib
nick = request.forms.nick.lower()
password = hashlib.sha1(request.forms.password).hexdigest()
message = {}
error = None
uid = get_user_id(db, nick, password)
if uid:
sess = request.environ.get('beaker.session')
sess['uid'] = uid
# .... do other stuff for the logged in user
Выход:
@get('/logout')
def logout():
if not is_logged_in():
redirect('/login')
else:
sess = request.environ.get('beaker.session')
sess.delete()
return template('logout.tpl')
Пользователь вошел в систему?
def is_logged_in():
'''Check whether the user sent a cookie that holds a Beaker created
session id
'''
sess_id = request.cookies.get('beaker.session.id', False)
if not sess_id:
return False
sess = request.environ.get('beaker.session')
if 'uid' not in sess:
return False
return True