2016-11-01 3 views
0

Ich entwickle eine cherrypy Anwendung auf localhost und schrieb dies um herauszufinden, was mit Sitzungen los ist.cherrypy 'tools.sessions.secure' scheint brechen Sitzungen

import cherrypy 

class WhyNotSessions(object): 

    @cherrypy.expose 
    def index(self): 
     if 'count' not in cherrypy.session: 
      cherrypy.session['count'] = 0 
     cherrypy.session['count'] += 1 
     return "Session count is %s" % cherrypy.session.get('count') 

if __name__ == '__main__': 
    conf = { 
     '/': { 
      'tools.sessions.on': True, 
      'tools.sessions.secure': True 
     } 
    } 
    cherrypy.quickstart(WhyNotSessions(), '/', conf) 

Dies funktioniert wie erwartet, mit count auf reload Inkrementieren - solange ich 'tools.sessions.secure': True von conf Kommentar aus. Ich würde gerne besser verstehen, was hier passiert, weil ich sichere Sitzungen in der Produktion verwenden möchte.

Antwort

0

Ich bin gerade über das gleiche Problem gestolpert.

Dies liegt daran, dass die Einstellung 'tools.sessions.secure' auf True das Flag 'secure' zum generierten Cookie hinzufügt, das die Sitzungs-ID speichert.

Wenn Sie in CherryPy kein HTTPS verwenden, wird dieses Cookie bei nachfolgenden Anfragen nie zurückgegeben. Daher wird jedes Mal eine neue Sitzungs-ID generiert.

Das Aktivieren von HTTPS in CherryPy behebt das Problem. Siehe unter CherryPy documentation on SSL für das Einschalten.