Найти - Пользователи
Полная версия: Webob и сессии
Начало » Web » Webob и сессии
1
Enchantner
Добрый день, кто-нибудь может подсказать готовое решение для управления пользовательской сессией в 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())

Понятно, что так делать не нужно, да и вообще ужасный код, но чем воспользоваться, если очень нужны секурные пользовательские сессии?

UPD: почитал про beaker, может, стоит его попользовать?
bismigalis

и причем здесь webob?

Enchantner
bismigalis
Использую его, как основу для небольшого JSON-RPC API.
bismigalis

это бибилиотека

сессии это функция фреймворка

Enchantner
bismigalis
я согласен, но это фактически единственная функция фреймворка, которая мне нужна. Остальные проблемы уже решены. Поэтому и ищу готовые решения в этой сфере.
bismigalis

посмотри в код существующих фреймворков и заимствуй

Enchantner
bismigalis
спасибо, кэп :) я надеялся, что кто-то знает готовое решение специально для этой цели, чтобы не писать руками велосипед на основе кода из фреймворка.
bw
Flask не предлагаю, предлагаю Werkzeug. Всё включено, средненький, без зависимостей (что невероятно круто в наше-то время, я считаю, а то каждый считает своим долгом на базе webob, beaker, jinja, routes и пр. сделать свой говно-фреймворк), аккуратный API, как по мне. Werkzeug больше не фреймворк, а библиотека, как набор Paste, что-ли. Кроме Flask на Werkzeug был сделан Glashammer, интересен прежде всего в образовательных целях, к сожалению заброшен.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB