Nachfolgend finden Empfehlung des werkzeug für die Sitzungs Serialisierung:Flask SecureCookie ersetzt Gurke mit json Ergebnisse in Codierungsfehler
The default implementation uses Pickle as this is the only module that used to be available in the standard library when this module was created. If you have simplejson available it’s strongly recommended to create a subclass and replace the serialization method:
Wenn ich beide haben im Anschluss an diese den Kolben Implementierung unter:
https://gist.github.com/runfalk/2501926
oder alternativ
from werkzeug.contrib.securecookie import SecureCookie
Secure_Cookie.serialization_method = json
UnicodeDecodeError: 'utf8' codec can't decode byte 0x97 in position 0: invalid start byte
Dies passiert, wenn ich versuche, mich anzumelden.
Ich habe in die Json-Encoder-Quelle eingetaucht und versucht, ensure_ascii=False
einzustellen, und dies hat mich über den Fehler oben hinaus, aber dann konnte ich mich überhaupt nicht in die Anwendung einloggen. Es würde nur den Bildschirm ohne Fehler blinken und ich blieb bei der Login-Eingabeaufforderung stecken. Mit Gurke funktioniert alles gut.
Eine wichtige Randnotiz dieses Problem auf die Integration der Flask-login
einzigartig ist und nur mit der Vanille flask
Sitzung Serialisierung
ASKSBADQUESTIONS des Code funktioniert in der Tat nicht auftritt, aber dies führt den Dekodierungsfehler
import json
from flask import Flask, session
from flask.sessions import SecureCookieSession, SecureCookieSessionInterface
from flask.ext.login import LoginManager
class JSONSecureCookieSession(SecureCookieSession):
serialization_method = json
class JSONSecureCookieSessionInterface(SecureCookieSessionInterface):
session_class = JSONSecureCookieSession
app = Flask(__name__)
app.secret_key = "I-like-cookies-and-some-secure-cookies"
app.session_interface = JSONSecureCookieSessionInterface()
#Initialize Login Manager
login_manager = LoginManager()
login_manager.setup_app(app)
@app.route("/")
def hello():
k = "lalala"
v = session.get(k)
if v is None:
print "set"
v = session[k] = "FLAAASK abuses decorators in a bad way :)"
else:
print "get"
return "Hello {0}".format(v)
if __name__ == "__main__":
app.run(debug=True)
Und hier ist die stacktrace
Traceback (most recent call last):
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 1362, in full_dispatch_request
response = self.process_response(response)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 1566, in process_response
self.save_session(ctx.session, response)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/app.py", line 804, in save_session
return self.session_interface.save_session(self, session, response)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/flask/sessions.py", line 205, in save_session
secure=secure, domain=domain)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 329, in save_cookie
data = self.serialize(session_expires or expires)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 235, in serialize
self.quote(value)
File "/usr/local/pythonbrew/venvs/Python-2.7.3/flask-session-bug/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 192, in quote
value = cls.serialization_method.dumps(value)
File "/usr/local/pythonbrew/pythons/Python-2.7.3/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/local/pythonbrew/pythons/Python-2.7.3/lib/python2.7/json/encoder.py", line 195, in encode
return encode_basestring_ascii(o)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x97 in position 0: invalid start byte
set
Also habe ich das Experimentieren fortgesetzt. Ich habe deinen Code dort eingegeben und es funktioniert gut. Dann habe ich Ihren Code Schritt für Schritt in meinen integriert. Was ich gefunden habe, ist die Minute, in der ich den Login-Manager von der Flask-Login-Erweiterung initialisiere, wenn ich den Fehler bekomme. – nsfyn55
Also, wenn Sie mein Beispiel oben überprüfen, sehen Sie, dass es eindeutig zu sein scheint, das Flask-Login-Modul zu integrieren – nsfyn55