2013-08-15 1 views
0

저는 ASCII/유니 코드 문제를 알고 있고 this과 같은 게시물을 보았습니다.flask_login : UnicodeDecodeError : 'ascii'코덱이 바이트를 디코드 할 수 없습니다.

GAE에 오류 메시지가 표시되지만 문제를 해결하기 위해 어떤 문제가 발생하는지 알 수 없습니다. flask_login의 cookie_digest에서 일어난 것 같습니다. 그런데 왜?

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

Exception on /login [POST] 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask/app.py", line 1687, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask/app.py", line 1362, in full_dispatch_request 
    response = self.process_response(response) 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask/app.py", line 1564, in process_response 
    response = handler(response) 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask_login.py", line 344, in _update_remember_cookie 
    self._set_cookie(response) 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask_login.py", line 363, in _set_cookie 
    data = encode_cookie(str(session['user_id'])) 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask_login.py", line 444, in encode_cookie 
    return u'{0}|{1}'.format(payload, _cookie_digest(payload)) 
    File "/base/data/home/apps/s~service/1-0-1-0.369408465659150157/lib/flask_login.py", line 688, in _cookie_digest 
    key = key.encode('utf-8') # ensure bytes 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc9 in position 0: ordinal not in range(128) 

편집 :

flask_login 파고 후, 그것은 비밀 키를 사용하여 일어나고있는 것 같다. 얼마나 이상한 !!! 나는 왜 우리의 애플 리케이션의 한 사용자에 대해서만 일어나고 있는지를보기 위해 그것 주위에 몇 가지 로깅을 넣어. 그리고 재현 가능한, 그녀가 로그인을 시도 할 때마다, 그녀는 예외를 얻습니다. 그러나 그녀 이외에, 나는 그것을 재현 할 수 없다.

def _cookie_digest(payload, key=None): 
    if key is None: 
     key = current_app.config['SECRET_KEY'] 
    logging.info(u'key - cookie - {0}'.format(key)) 
    if hasattr(key, 'encode'): 
     key = key.encode('utf-8') # ensure bytes 

    return hmac.new(key, payload.encode('utf-8'), sha1).hexdigest() 

답변

3

이것은 처리 된 Flask-Login의 버그입니다. pull request with the fix을 참조하십시오.

+0

최신 flask-login ('pip install flask-login')을 설치했지만 여전히 동일한 문제가 발생합니다. 수정 프로그램이 아직 릴리스 되었습니까? – Houman

+0

PyPi의 최신 Flask-Login 릴리스는 0.2.6이며 7/18에 릴리스되었습니다. 이 픽스는 8 월 초에 병합되었으므로 다음 릴리스를 기다리거나 git에서 설치해야합니다. – Miguel

+0

오오 그렇습니다. git에서 설치해야만했습니다. 이제 작동합니다. 그런 벌레에 대한 수정이 아직 공개되지 않은 것은 참으로 유감스러운 일입니다. – Houman

관련 문제