Nach dem Upgrade 0,10 bis Flask, ich diesen Fehler:Flask 0.10 geben Unicode-Fehler auf Session-Cookie
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 'iB\rOU#\xf7BO\x08^\xa6\xd1)v\xad')
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 'iB\rOU#\xf7BO\x08^\xa6\xd1)v\xad')
Was die self.save_session (ctx.session, Response) für Kolben/app.py Linie 1693 gibt ist das: flask.sessions.SecureCookieSession ({'_ id': 'iB \ rOU # \ xf7BO \ x08^\ xa6 \ xd1) v \ xad', '_blitz': [('nachricht', 'Bitte melden Sie sich an Greife auf diese Seite zu. ')]})
Also, wenn ich das richtig lese, gibt die Sitzung eine ID, die flask versucht Unicode (und scheitert an). Ich habe keine Ahnung, wie ich das beheben kann (das Leeren meines Browser-Cache, um auf eine neue Sitzung zu hoffen, hat auch nicht geholfen). Kann mir jemand irgendwelche Vorschläge machen, was ich tun soll?
Mit freundlichen Grüßen
Carst
edit: einige zusätzliche Informationen. Mein Setup verwendet flask, flask_mail, flask.ext.mongoengine und flask.ext.security; Ich benutze MongoEngine: db = flask.ext.mongoengine.MongoEngine (app) und Kolben-Sicherheit: user_datastore = flask.ext.security.MongoEngineUserDatastore (db, Benutzer, Rolle) security = flask.ext.security.Security (app, user_datastore)
Edit: es erscheint eine doppelte Frage zu sein: Flask Login: TypeError: decoding Unicode is not supported
(hatte es nicht gesehen, sorry)
Diese Frage ist nicht gerade ein Duplikat, da die Antworten dort durch die Herabstufung auf eine andere Version zu lösen, hier während der Autor von Flask gab eine Antwort, die tatsächlich funktioniert. – Lipis