|
最近做GAE的时候,一直在解决关于cookie的问题,看了一些文档以后,找到下面一个较为直观的处理方法
设置cookie:
@staticmethod
def setCookie(webhandler,username,userid):
cookies = Cookie.SimpleCookie()
cookies['UserName'] = username.decode('utf-8')
cookies['UserName']['path'] = '/'
cookies['UserName']['max-age'] = 3600*24*365
cookies['UserId'] = userid
cookies['UserId']['path'] = '/'
cookies['UserId']['max-age'] = 3600*24*365
output_headers = []
output_headers.append('%s\r\n' % cookies)
for header in output_headers:
sys.stdout.write(header)
保存的时候要制定过期时间,在python中可以指定多少秒以后过去,所以你可以看到这里是使用3600*24*365的方式
读取cookie
@staticmethod
def CheckCookie(webhandler):
cookies = os.environ.get('HTTP_COOKIE', None)
if cookies is not None:
user_cookie = Cookie.SimpleCookie()
user_cookie.load(cookies)
try:
username = user_cookie['UserName'].value
userid = user_cookie['UserId'].value
return True,username,userid
except KeyError:
return False,'',''
这里读取的时候偷懒用了try catch来处理异常,通常异常都会发生在cookie中没有这个key
那么比较好的方式是使用下面的方式
if 'UserName' in webhandler.request.cookies:
当cookies中包含UserName这个key,然后才做后面的处理
参考地址:http://www.blowblood.com/tag/python |
|