2013-06-13 26 views
6

Sau khi nâng cấp lên bình 0,10, tôi nhận được lỗi này:Flask 0.10 đưa ra lỗi unicode trên cookie phiên

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

gì self.save_session (ctx.session, phản ứng) cho bình/app.py dòng 1693 mang đến cho là: flask.sessions.SecureCookieSession ({'_ id': 'iB \ rOU # \ xf7BO \ x08^\ xa6 \ xd1) v \ xad', '_flashes': [('message', 'Vui lòng đăng nhập vào truy cập trang này. ')]})

Vì vậy, nếu tôi đọc chính xác, phiên sẽ cung cấp id mà bình cố gắng unicode (và không thành công). Tôi không có đầu mối về cách sửa lỗi này (làm trống bộ nhớ cache của trình duyệt của tôi để hy vọng một phiên mới không giúp được gì). Có ai cho tôi bất cứ đề nghị nào về những gì tôi nên làm không?

Trân trọng!

Carst

chỉnh sửa: một số thông tin thêm. Thiết lập của tôi sử dụng bình, flask_mail, flask.ext.mongoengine và flask.ext.security; tôi sử dụng MongoEngine: db = flask.ext.mongoengine.MongoEngine (ứng dụng) và bình bảo mật: user_datastore = flask.ext.security.MongoEngineUserDatastore (db, Người dùng, Vai trò) security = flask.ext.security.Security (ứng dụng, user_datastore)

Edit: nó dường như là một câu hỏi kép: Flask Login: TypeError: decoding Unicode is not supported

(đã không nhìn thấy nó, xin lỗi)

+0

Câu hỏi này là không chính xác là một bản sao từ các câu trả lời có được giải quyết bằng cách hạ thấp lên phiên bản khác, trong khi đây là tác giả của Flask đưa ra câu trả lời thực sự hiệu quả. – Lipis

Trả lời

2

Một cách giải quyết tạm thời (nhờ Kave) đã hạ giá cả Flask và Werkzeug:

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

Có, vui lòng sử dụng Flask 0.9: không có gì sai với 0.9 và chúng tôi không có ý định thực hiện việc phát hành Flask-Login trước khi chúng tôi sẵn sàng. (Chúng tôi chưa sẵn sàng.) – maxcountryman

+3

@maxcountryman bây giờ bạn đã sẵn sàng chưa? Nó hoạt động .. – Lipis

10

đó là hiện một vấn đề với Flask-Login. Theo như tôi biết nó đã được sửa trong phiên bản git của phần mở rộng.

+0

cảm ơn bạn! Tôi sẽ kiểm tra xem nó ra (và nhờ làm Flask :) Đối với những người tìm thấy bài đăng này, xem thêm: https://github.com/maxcountryman/flask-login/issues/78 – Carst

+0

Điều này chưa được sửa trong bất kỳ phiên bản nào của phần mở rộng. – maxcountryman

Các vấn đề liên quan