abn0 2019-06-28
Cookie是很多网站为了辨别用户的身份而存储在用户本地终端(Client Side)d的数据,在Tornado中使用RequestHandler.get_cookie()、RequestHandler.set_cookie()可以方便地对Cookie进行读写。
import tornado.web
session_id = 1
class MainHandler(tornado.web.RequestHandler):
def get(self):
global session_id
if not self.get_cookie("session"):
self.set_cookie("session",str(session_id))
session_id+=1
self.write("设置新的session")
else:
self.write("已经具有session")
if __name__ == '__main__':
app=tornado.web.Application([
("/",MainHandler)
])
app.listen("8888")
tornado.ioloop.IOLoop.current().start()本例中用get_cookie()函数判断Cookie名【session】是否存在,如果不存在则为其赋予新的session_id.
在实际应用中,Cookie经常像本例这样用于保存session信息。代码:
import tornado.web
session_id = 1
class MainHandler(tornado.web.RequestHandler):
def get(self):
global session_id
#get_secure_cookie代替get_cookie
if not self.get_secure_cookie("session"):
#set_secure_cookie代替set_cookie
self.set_secure_cookie("session",str(session_id))
session_id+=1
self.write("设置新的session")
else:
self.write("已经具有session")
if __name__ == '__main__':
app=tornado.web.Application([
("/",MainHandler)
],cookie_secret="JIA_MI_MI_YAO")
app.listen("8888")
tornado.ioloop.IOLoop.current().start()对比上面的简单Cookie实例可以发现不同之处:
这样,就不需要担心Cookie伪造的问题了,但是cookie_secret参数值作为加密密钥,需要好好保护,不能泄露。