一、cookie用法补充
1、cookie的应用场景
浏览器端保存的键值对,每次访问都会携带
1)用户验证,多长时间内免登陆
2)后台管理,左侧隐藏,可以把隐藏的键值对保存在cookie中
3)每页显示多少条数据也可以保存在cookie中
设置cookie的方法:
1)tornado在后台进行设置
self.cookies #获取所有的cookie
self.setcookie("k1","999") #设置cookie
self.getcookie("k1") #获取某个cookie
2)浏览器端使用javascript进行设置或获取
document.cookie //获取所有cookie,返回的是字符串格式:"k1=9999",如果想获取k1的值,则通过处理字符串
document.cookie = "k2=666" //设置cookie,增加键值对 "k2=666"
//重新获取下
document.cookie //结果:"k1=9999; k2=666"
2、cookie的方法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
import time
class MainHandler(tornado.web.RequestHandler):
def get(self):
#self.write("Hello, world")
self.render('index.html') #因为配置了全局文件路径,所以s1.html表示template/s1.html
class ManagerHandler(tornado.web.RequestHandler):
def get(self,*args,**kwargs):
#co = self.get_cookie("auth")
co = self.get_secure_cookie("auth") #返回b'wuzheng',是字节类型
co1 = str(co,encoding='utf-8') #转化为字符串类型
print(co1)
if co1 == "wuzheng":
self.render('manager.html')
else:
self.redirect("\login")
class LogInHandler(tornado.web.RequestHandler):
def get(self,*args,**kwargs):
self.render('login.html',status="")
def post(self,*args,**kwargs):
username = self.get_argument("username",None)
password = self.get_argument("password",None)
if username == "sunshuhai" and password == "123":
#self.set_cookie("auth","1")
#self.set_cookie("auth,","wuzheng",expires_days=7) #expires_days表示7天后cookie过期
#r = time.time() + 10
#self.set_cookie("auth,","wuzheng",expires=r) #表示10秒后过期
#self.set_cookie("auth,","wuzheng",expires=time.time()) #表示立即过期
self.set_secure_cookie("auth","wuzheng")
self.render("index.html")
else:
self.render('login.html',status = "用户名密码错误!")
class LogOutHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.set_cookie("auth","0") #将cookie中auth的值改掉
self.redirect("/login")
settings = {
'template_path':'views', #配置全局文件路径为:template
'cookie_secret':'qerqrdfd12dds',
}
#路由映射
application = tornado.web.Application([
(r"/index", MainHandler),
(r"/manager",ManagerHandler),
(r"/login",LogInHandler),
(r"/logout",LogOutHandler),
],**settings) #**settings是让配置生效
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()