Flask 0.10 выдает ошибку unicode в файле cookie сеанса
После обновления до Flask 0.10, я получаю эту ошибку:
flask.debughelpers.UnexpectedUnicodeError
UnexpectedUnicodeError: A byte string with non-ASCII data was passed to the session system which can only store unicode strings. Consider base64 encoding your string (String was 'iBrOU#xf7BOx08^xa6xd1)vxad')
Traceback (most recent call last)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1479, in full_dispatch_request
response = self.process_response(response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1693, in process_response
self.save_session(ctx.session, response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 837, in save_session
return self.session_interface.save_session(self, session, response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 321, in save_session
val = self.get_signing_serializer(app).dumps(dict(session))
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 471, in dumps
return self.make_signer(salt).sign(self.dump_payload(obj))
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 676, in dump_payload
json = super(URLSafeSerializerMixin, self).dump_payload(obj)
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 454, in dump_payload
return self.serializer.dumps(obj)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 82, in dumps
return json.dumps(_tag(value), separators=(',', ':'))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 72, in _tag
return dict((k, _tag(v)) for k, v in iteritems(value))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 72, in <genexpr>
return dict((k, _tag(v)) for k, v in iteritems(value))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 80, in _tag
u'base64 encoding your string (String was %r)' % value)
UnexpectedUnicodeError: A byte string with non-ASCII data was passed to the session system which can only store unicode strings. Consider base64 encoding your string (String was 'iBrOU#xf7BOx08^xa6xd1)vxad')
Что такое самость.save_session(СТХ.сессия, ответ) для flask/app.py строка 1693 дает это: колба.проведение сессий.SecureCookieSession({'параметр _id': 'Роу ИБ#xf7BOx08^xa6настоящие xd1)вна амберлите xAD', '_flashes': [('сообщение', 'пожалуйста, войдите в систему для доступа к этой странице.')]})
Итак, если я правильно прочитал это, сеанс дает идентификатор, который flask пытается юникодировать (и терпит неудачу). Я понятия не имею, как это исправить (опустошение кэша моих браузеров, чтобы надеяться ибо новый сеанс тоже не помог). Может ли кто-нибудь дать мне какие-либо предложения о том, что я должен делать?
С уважением,
Карст
Правка: дополнительная информация. Моя настройка использует flask, flask_mail, flask.доб.мангуст и фляжка.доб.безопасность; я использую MongoEngine: db = колба.доб.mongoengine.MongoEngine (приложение) и фляжка-безопасность: user_datastore = колба.доб.безопасность.MongoEngineUserDatastore (БД, пользователь, роль) безопасность = колба.доб.безопасность.Безопасность (app, user_datastore)
Править: похоже, это двойной вопрос.: Flask Login: TypeError: декодирование Unicode не поддерживается
(не видел, извините)
2 ответа:
Это в настоящее время проблема с Flask-Login. Насколько я знаю, это исправлено в git-версии расширения.