flask_login: UnicodeDecodeError: 'ascii' codec can't decode byte
我知道ascii/unicode的问题,并看过这样的文章。
然而,我在GAE上得到的错误消息并没有给我任何线索,说明这个问题是在哪里发生的,以便修复它。它似乎发生在cookie_digest in flask_login上?但是为什么呢?
有人能给我指个方向吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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) |
编辑:
在挖了瓶子的登录名后,似乎是用密匙进行的。真奇怪!!!!我在它周围放了一些日志,以了解为什么只有我们的应用程序的一个用户会发生这种情况。而且它可以复制,每次她尝试登录时,都会得到一个例外。但除了她,我不能复制它。
1 2 3 4 5 6 7 8 | 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() |
这是flask登录中的一个bug,已经解决了。请参阅带修复程序的请求。