🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### Cookie 和安全 Cookie 你可以使用 `set_cookie` 方法在用户的浏览中设置 cookie: ``` 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!") ``` Cookie 很容易被恶意的客户端伪造。加入你想在 cookie 中保存当前登陆用户的 id 之类的信息,你需要对 cookie 作签名以防止伪造。Tornado 通过 `set_secure_cookie` 和 `get_secure_cookie` 方法直接支持了这种功能。 要使用这些方法,你需要在创建应用时提供一个密钥,名字为 `cookie_secret`。 你可以把它作为一个关键词参数传入应用的设置中: ``` application = tornado.web.Application([ (r"/", MainHandler), ], cookie_secret="61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=") ``` 签名过的 cookie 中包含了编码过的 cookie 值,另外还有一个时间戳和一个 [HMAC](http://en.wikipedia.org/wiki/HMAC) 签名。如果 cookie 已经过期或者 签名不匹配,`get_secure_cookie` 将返回 `None`,这和没有设置 cookie 时的 返回值是一样的。上面例子的安全 cookie 版本如下: ``` 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!") ```