6

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 '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')

フラスコ/app.py 行 1693 の self.save_session(ctx.session, response) が与えるものは次のとおりです。 v\xad', '_flashes': [('メッセージ', 'このページにアクセスするにはログインしてください。')]})

したがって、これを正しく読んだ場合、セッションはフラスコがユニコードを試行する(そして失敗する)IDを提供します。これを修正する方法についての手がかりがありません (ブラウザのキャッシュを空にして、新しいセッションを期待しても解決しませんでした)。私が何をすべきかについて誰かが私に何か提案をしてもらえますか?

敬具、

カースト

編集:いくつかの追加情報。私のセットアップでは、flask、flask_mail、flask.ext.mongoengine、flask.ext.security を使用しています。私はMongoEngineを使用しています:db =フラスコ.ext.mongoengine.MongoEngine(アプリ)とフラスコセキュリティ:user_datastore =フラスコ.ext.security.MongoEngineUserDatastore(db、ユーザー、ロール)セキュリティ=フラスコ.ext.security.Security(アプリ、user_datastore )

編集:二重の質問のようです: Flask Login:TypeError:Unicodeのデコードはサポートされていません

(見てないです、ごめんなさい)

4

2 に答える 2

10

これは現在、Flask-Loginの問題です。私の知る限り、拡張機能の git バージョンで修正されています。

于 2013-06-13T21:27:25.653 に答える