Exemple #1
0
 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()
Exemple #2
0
 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
Exemple #3
0
 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
Exemple #4
0
 def __init__(self, *args, **kwargs):
     self.redis_client = redis_cli()
     super().__init__(*args, **kwargs)