def session(self, value): self._session = value redis_cli().pipeline().set( self.session_key, pickle.dumps(value) ).expire( self.session_key, value and SESSION_CACHE_EXPIRE or 0 ).execute()
def get_current_user(self): """根据cookie信息从redis中获取用户身份""" session_id = self.request.headers.get('X-Session-Id') or self.get_cookie('__sid__') if session_id: user_id = redis_cli().get('{}:sid:{}'.format(options.REDIS_NAMESPACE, session_id)) if user_id: return user_id.decode() return None
def gen_session_id(self, user_id=''): """生成session_id,存储于头部和redis""" expires_days = 30 session_id = str(uuid.uuid4()) redis_cli().pipeline().set( '{}:sid:{}'.format(options.REDIS_NAMESPACE, session_id), user_id or self.current_user ).expire( '{}:sid:{}'.format(options.REDIS_NAMESPACE, session_id), 3600 * 24 * expires_days ).execute() self.set_cookie( name="__sid__", value=session_id, path="/", expires_days=expires_days, # 过期时间设置为1个月 ) self.set_header('X-Session-Id', session_id) return session_id
def __init__(self, *args, **kwargs): self.redis_client = redis_cli() super().__init__(*args, **kwargs)