网站首页学无止境PYTHON
python框架Tornado之二Tornado 攻略(3) Cookie 和安全 Cookie
发布时间:2014-07-25 17:17:15编辑:songlin阅读(103)
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- if not self.get_cookie("mycookie"):
- self.set_cookie("mycookie", "myvalue")
- self.write("Your cookie was not set yet!")
- else:
- self.write("Your cookie was set!")
- application = tornado.web.Application([
- (r"/", MainHandler),
- ], cookie_secret="61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=")
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- if not self.get_secure_cookie("mycookie"):
- self.set_secure_cookie("mycookie", "myvalue")
- self.write("Your cookie was not set yet!")
- else:
- self.write("Your cookie was set!")
Cookie 和安全 Cookie
你可以使用 set_cookie
方法在用户的浏览中设置 cookie:
Cookie 很容易被恶意的客户端伪造。加入你想在 cookie 中保存当前登陆用户的 id 之类的信息,你需要对 cookie 作签名以防止伪造。Tornado 通过 set_secure_cookie
和 get_secure_cookie
方法直接支持了这种功能。 要使用这些方法,你需要在创建应用时提供一个密钥,名字为 cookie_secret
。 你可以把它作为一个关键词参数传入应用的设置中:
签名过的 cookie 中包含了编码过的 cookie 值,另外还有一个时间戳和一个 HMAC 签名。如果 cookie 已经过期或者 签名不匹配,get_secure_cookie
将返回 None
,这和没有设置 cookie 时的 返回值是一样的。上面例子的安全 cookie 版本如下:
本文来源地址:http://sebug.net/paper/books/tornado/