示例#1
0
    def save_session(self, app, session, response):
        domain = self.get_cookie_domain(app)
        path = self.get_cookie_path(app)

        if not session:
            if session.modified:
                cache.delete(self.key_prefix + session.sid)
                response.delete_cookie(app.session_cookie_name,
                                       domain=domain,
                                       path=path)
            return

        if session.modified:
            httponly = self.get_cookie_httponly(app)
            secure = self.get_cookie_secure(app)
            expires = self.get_expiration_time(app, session)
            val = self.serializer.dumps(dict(session))

            if session.sid is None:
                session.sid = self._generate_sid()

            cache.set(key=self.key_prefix + session.sid,
                      value=val,
                      timeout=total_seconds(app.permanent_session_lifetime))
            session_id = session.sid
            response.set_cookie(app.session_cookie_name,
                                session_id,
                                expires=expires,
                                httponly=httponly,
                                domain=domain,
                                path=path,
                                secure=secure)
示例#2
0
    def regenerate(self):
        cache.delete(self.sid)

        # Empty current sid and mark modified so the interface will give it a new one.
        self.sid = None
        self.modified = True