Dopo l'aggiornamento a Boccetta 0,10, ottengo questo errore:Flask 0.10 dando errore unicode su cookie di sessione
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')
Che self.save_session (ctx.session, risposta) per bambole/app.py linea 1693 dà è questo: flask.sessions.SecureCookieSession ({'_ id': 'iB \ rOU # \ xf7BO \ x08^\ xa6 \ xd1) v \ xad', '_flashes': [('messaggio', 'Effettua il login per accedere a questa pagina. ')]})
Quindi, se ho letto questo correttamente, la sessione dà un id che pallone cerca di unicode (e fallisce a). Non ho idea di come correggere questo (svuotare la cache del mio browser per sperare che una nuova sessione non sia stata d'aiuto). Qualcuno può darmi qualche suggerimento su cosa dovrei fare?
Cordiali saluti,
Carst
edit: qualche informazione in più. Il mio setup usa flask, flask_mail, flask.ext.mongoengine e flask.ext.security; io uso MongoEngine: db = flask.ext.mongoengine.MongoEngine (app) e pallone-sicurezza: user_datastore = flask.ext.security.MongoEngineUserDatastore (db, utente, ruolo) security = flask.ext.security.Security (app, user_datastore)
Edit: sembra essere una doppia domanda: Flask Login: TypeError: decoding Unicode is not supported
(non l'avessi visto, sorry)
Questa domanda non è esattamente un duplicato in quanto le risposte non stanno risolvendo per il downgrade a un'altra versione, mentre qui l'autore di Flask ha dato una risposta che funziona davvero. – Lipis