web框架--tornado之cookie
cookie
的本质其实就是在浏览器端保存的键值对, 每当浏览器端发送一次请求, 都会将这些键值对附加在请求中并发送给服务器端。
一、目录结构
二、main_pro.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import tornado.ioloop import tornado.web class IndexHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): # self.write("Hello, world") t = self.get_cookie(‘auth‘) if t == ‘1‘: self.render(‘index.html‘) else: self.redirect(‘/login‘) class LogoutHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): # self.write("Hello, world") self.set_cookie(‘auth‘, ‘0‘) #退出登录,将cookie信息清空 self.redirect(‘/login‘) class LoginHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): # self.write("Hello, world") self.render(‘login.html‘, status_text=‘‘) def post(self, *args, **kwargs): username = self.get_argument(‘username‘, None) pwd = self.get_argument(‘password‘, None) if username == ‘yusheng_liang‘ and pwd == ‘adm‘: self.set_cookie(‘auth‘, ‘1‘) #登录谁成功,设置cookie信息 self.redirect(‘/index‘) else: self.render(‘login.html‘, status_text=‘登录失败‘) settings = { ‘template_path‘: ‘views‘, #视图模板路径 ‘static_path‘: ‘static‘, #静态文件路径 } #路由映射,路由系统 def make_app(): return tornado.web.Application([ (r"/login", LoginHandler), (r"/index", IndexHandler), (r"/logout", LogoutHandler), ], **settings) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
1)self.set_cookie(‘name‘, ‘test‘)
设置未加密的cookie
, 键为‘name‘, 值为test
2)self.set_secure_cookie(‘user‘, ‘test‘)
设置加密cookie
, 键为‘user‘, 值为test
. 设置加密cookie
我们需要在配置中添加自定义的加密串(俗称对加密结果加盐)"cookie_secret": ‘test-secret,‘
3)name = self.get_cookie(‘name‘, None)
获取指定key
未加密的cookie
的值
4)user = self.get_cookie(‘user‘, None)
获取指定key
的加密后的cookie
的值
5)对于set_cookie()
和set_secure_cookie()
都用以下常见参数value
表示传入cookie
的name
对应的值name
表示传入cookie
的键
6)domain=None
表示域名
7)expires=None
设置过期时间, 这里单位为秒
path="/"
表示当前的cookie
在那些路径下有效, /
表示当前域名下所有的路径均有效
expires_days=None
设置过期时间, 单位为天