def __check_login__(token): """ platform兼容各平台 统计总平台与各平台设备hgetall, 通过placeholder来限制各平台设备数 备注:映射关系 {email + platform + place --> ssid}无法设置过期时间, 当APP内用户量庞大时需要定时清理ssid为None的epp映射关系,一期暂时不做清理 :return: """ key_pix = r.get(token) if key_pix: # 是否注销登录 no_valid_token = jwt.decode( token, signers=[jws.HmacSha(bits=256, key=web['token_key'] + key_pix)]) # 校验token是否有效 if no_valid_token['valid']: now_timestamp = time.time() if no_valid_token['payload']['exp'] > now_timestamp: return no_valid_token['payload']['username'] else: r.delete(token) return False else: r.delete(token) return False else: return False
def __init__(self, dm=None, phone=None, options=None, config_file=None, chunk=1, repos=[]): PhoneTest.__init__(self, dm=dm, phone=phone, options=options, config_file=config_file, chunk=chunk, repos=repos) self._result_server = None self._resulturl = None self.perfherder_artifact = None if options.phonedash_url: self._resulturl = urlparse.urljoin(options.phonedash_url, '/api/s1s2/') self.loggerdeco.debug('PerfTest._resulturl: %s' % self._resulturl) # [signature] self._signer = None self._jwt = {'id': options.phonedash_user, 'key': options.phonedash_password} # phonedash requires both an id and a key. if self._jwt['id'] and self._jwt['key']: self._signer = jws.HmacSha(key=self._jwt['key'], key_id=self._jwt['id']) # [settings] try: self._iterations = self.cfg.getint('settings', 'iterations') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): self._iterations = 1 try: self.stderrp_accept = self.cfg.getfloat('settings', 'stderrp_accept') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): self.stderrp_accept = 0 try: self.stderrp_reject = self.cfg.getfloat('settings', 'stderrp_reject') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): self.stderrp_reject = 100 try: self.stderrp_attempts = self.cfg.getint('settings', 'stderrp_attempts') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): self.stderrp_attempts = 1 self.perfherder_options = {} try: self.perfherder_options['alert_threshold'] = self.cfg.getint('perfherder', 'alert_threshold') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass try: self.perfherder_options['min_back_window'] = self.cfg.getint('perfherder', 'min_back_window') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass try: self.perfherder_options['max_back_window'] = self.cfg.getint('perfherder', 'max_back_window') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass try: self.perfherder_options['fore_window'] = self.cfg.getint('perfherder', 'fore_window') except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass self._resultfile = None self._resultwriter = None self.loggerdeco.debug('PerfTest: %s', self.__dict__)
def generate_token(username): iat = time.time() exp = iat + web['session_timeout'] payload = {'username': username, 'iat': iat, 'exp': exp} key_pix = token_key() token = jwt.encode(payload, signer=jws.HmacSha(bits=256, key=web['token_key'] + key_pix)) r.set(token, key_pix) return token
def de_token(token): if token is None: return None token = str(token) token_key_pix = redis_service.get(token) if token_key_pix is None: return None token_keys = web['token_key'] + token_key_pix no_valid_token = jwt.decode( token, signers=[jws.HmacSha(bits=256, key=token_keys)]) if no_valid_token['valid']: return no_valid_token['payload'] else: return None
def en_token(telephone, user_id): iat = time.time() exp = iat + ex_time['token_ex'] payload = { 'telephone': str(telephone), 'user_id': str(user_id), 'iat': iat, 'exp': exp } key_pix = generate_key() token = jwt.encode(payload, signer=jws.HmacSha(bits=256, key=web['token_key'] + key_pix)) redis_service.set(token, key_pix) return token