Форум сайта python.su
Добрый день, кто-нибудь может подсказать готовое решение для управления пользовательской сессией в webob? Переход на Flask прошу пока что не предлагать. Проблема в том, что в webob данного механизма просто нету.
Сейчас делаю криво руками:
# -*- coding: utf-8 -*- import hashlib import pickle from base64 import b64encode, b64decode from metake import settings from Crypto.Cipher import AES from Crypto import Random class Session(dict): def __init__(self, data=None, *args, **kwargs): self.secret = settings.SECRET_KEY self.data = u"" if data: self.data = data def encode(self): obj = AES.new(self.secret, AES.MODE_CBC, self.secret[:16]) string = pickle.dumps(self) p = 16 * (int(len(string) / 16.0) + 1) - len(string) string = string + ("#" * p) self.data = b64encode(obj.encrypt(string)).decode('ascii') return self.data def decode(self): obj = AES.new(self.secret, AES.MODE_CBC, self.secret[:16]) string = obj.decrypt(b64decode(self.data.encode('ascii'))).rstrip("#") return pickle.loads(string) def cookies(self): return ("session", self.encode())
Отредактировано Enchantner (Окт. 20, 2013 21:54:54)
Офлайн
и причем здесь webob?
Офлайн
bismigalis
Использую его, как основу для небольшого JSON-RPC API.
Офлайн
это бибилиотека
сессии это функция фреймворка
Офлайн
bismigalis
я согласен, но это фактически единственная функция фреймворка, которая мне нужна. Остальные проблемы уже решены. Поэтому и ищу готовые решения в этой сфере.
Офлайн
посмотри в код существующих фреймворков и заимствуй
Отредактировано bismigalis (Окт. 20, 2013 22:14:32)
Офлайн
bismigalis
спасибо, кэп :) я надеялся, что кто-то знает готовое решение специально для этой цели, чтобы не писать руками велосипед на основе кода из фреймворка.
Офлайн
Flask не предлагаю, предлагаю Werkzeug. Всё включено, средненький, без зависимостей (что невероятно круто в наше-то время, я считаю, а то каждый считает своим долгом на базе webob, beaker, jinja, routes и пр. сделать свой говно-фреймворк), аккуратный API, как по мне. Werkzeug больше не фреймворк, а библиотека, как набор Paste, что-ли. Кроме Flask на Werkzeug был сделан Glashammer, интересен прежде всего в образовательных целях, к сожалению заброшен.
..bw
Офлайн