2013-06-13 8 views
6

0.10をフラスコにアップグレードした後、セッションCookieのユニコードエラーを与えて、私はこのエラーを取得:フラスコ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 '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') 

何self.save_sessionフラスコ用(ctx.session、応答)/ app.pyライン1693は提供しますこれは: flask.sessions.SecureCookieSession({'_ id': 'iB \ rOU#\ xf7BO \ x08^\ xa6 \ xd1)v \ xad'、 '_flashes':[( 'メッセージ'、 'このページにアクセスしてください。 ')]})

これを正しく読んだ場合、セッションはフラスコがユニコードしようとしている(そして失敗した)というIDを返します。私はこれを修正する方法についての手がかりがありません(新しいセッションを望むために私のブラウザのキャッシュを空にしても役に立たなかった)。 誰かが私が何をすべきかに関する提案を私に与えることができますか?

敬具、

Carst

編集:いくつかの余分な情報。私のセットアップはflask、flask_mail、flask.ext.mongoengineとflask.ext.securityを使用します。私はMongoEngineを使用: DB = flask.ext.mongoengine.MongoEngine(APP) フラスコセキュリティ: USER_DATASTORE = flask.ext.security.MongoEngineUserDatastore(DB、ユーザ、役割) セキュリティ= flask.ext.security.Security (アプリ、USER_DATASTORE)

編集: Flask Login: TypeError: decoding Unicode is not supported

(それを見たことがなかった、申し訳ありません)

+0

この質問は、フラスコの著者はしばらくここに、別のバージョンにダウングレードすることにより、そこに解決されている解答ので、正確に重複していません実際に働く答えを出しました。 – Lipis

答えて

2

一時的な回避策(KAVEのおかげで)フラスコとWERKZEUGの両方をダウングレードされます。

pip install werkzeug==0.8.3 
pip install flask==0.9 
pip install Flask-Login==0.1.3 
+0

はい、Flask 0.9を使用してください:0.9に何も問題はありません。準備が整う前にFlask-Loginのリリースを行うつもりはありません。 (私たちは準備ができていません) – maxcountryman

+3

@maxcountryman準備ができましたか?できます.. – Lipis

10

現在Flask-Loginの問題だ:二重の問題であるように思われます。私の知る限り、拡張モジュールのgitバージョンで修正されています。

+0

ありがとうございます!私はそれをチェックします(そして、Flaskを作ってくれてありがとう)。 この投稿を見つけた人のために:https://github.com/maxcountryman/flask-login/issues/78 – Carst

+0

これはどのバージョンでも修正されていません拡張の – maxcountryman