2013-06-13 4 views
6

0.10을 플라스크에 업그레이드 한 후 세션 쿠키에 유니 코드 오류를주고, 내가이 오류를 얻을 :플라스크 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 라인 1,693 준다 '('message ','로그인하십시오.) ','_flash ':'(''id ':'iB \ rOU # xf7BO \ x08 '\ xa6 \ xd1' 이 페이지에 액세스하십시오. ')]})

이렇게 올바르게 읽으면 세션에서 플라스크가 유니 코드를 시도하는 ID를 제공합니다. 이 문제를 해결하는 방법에 대한 단서가 없습니다 (새 세션을 원한다면 브라우저 캐시를 비우는 것도 도움이되지 않습니다). 누구든지 내가해야 할 일에 대해 제안 할 수 있습니까?

종류와 관련,

Carst

편집 : 몇 가지 추가 정보. 나의 셋업은 flask, flask_mail, flask.ext.mongoengine 및 flask.ext.security를 ​​사용합니다. 내가 MongoEngine를 사용 dB = flask.ext.mongoengine.MongoEngine (응용 프로그램) 과 플라스크 보안 : 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

예, 플라스크 0.9를 사용하십시오 : 0.9에 아무런 문제가 없습니다. 플라스크 - 로그인이 준비되기 전에 플라스크 - 로그인을 할 생각이 없습니다. (우리는 준비가 안되었습니다.) – maxcountryman

+3

@maxcountryman 준비가 되셨습니까? 그것은 작동 .. – Lipis

10

현재 Flask-Login에 문제가있다 : 두 배 질문 것으로 보인다. 내가 아는 한, 확장 기능의 git 버전에서 수정되었다.

+0

고마워요! 나는 그것을 조사 할 것이다. (Flask를 만들어 주셔서 감사합니다.) 이 게시물을 찾는 사람들은 다음을 참조하십시오 : https://github.com/maxcountryman/flask-login/issues/78 – Carst

+0

이 버전은 어떤 버전에서도 수정되지 않았습니다 확장의 – maxcountryman