def cookie2user(cookie_str):
'''
Parse cookie and load user if cookie is valid.??cookie???????cookie???????
'''
if not cookie_str:
return None
try:
# ?????????????????“-”??cookie?????id?????????????
L = cookie_str.split('-') # ????str?list
if len(L) != 3: # cookie????????????????????????????
return None
uid, expires, sha1 = L
if int(expires) < time.time(): # ??????????cookie???
return None
user = yield from User.find(uid) # ???????????
if user is None: # ??????????????
return None
# ??sha1?????????cookie??sha1?????
s = '%s-%s-%s-%s' % (uid, user.passwd, expires, _COOKIE_KEY)
# ????????????
if sha1 != hashlib.sha1(s.encode('utf-8')).hexdigest():
logging.info('invalid sha1')
return None
user.passwd = '******'
# ??cookie??????????????????????????????
# ?? ????????
return user
except Exception as e:
logging.exception(e)
return None
# ----------------------------------?????--------------------------------
# day14???
# ?????
评论列表
文章目录