Tornado框架04-cookie

作者: 凉茶半盏 | 来源:发表于2017-03-12 14:27 被阅读42次

    cookie的本质其实就是在浏览器端保存的键值对, 每当浏览器端发送一次请求, 都会将这些键值对附加在请求中并发送给服务器端.

    **我们简单使用下python中的cookie: **

    项目目录

    **home.py文件: **

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import tornado.web
    
    
    class IndexHandle(tornado.web.RequestHandler):
        def get(self):
            username = self.get_argument('u', None)
            if not username:
                self.set_cookie('name', 'test')
                self.set_secure_cookie('user', 'test')
                self.redirect('/admin')
    
        def post(self):
            pass
    
    
    class AdminHandle(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            name = self.get_cookie('name', None)
            user = self.get_cookie('user', None)
            print('name: ', name, "\nuser: ", user)
    

    **start.py文件: **

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import tornado.web, tornado.ioloop
    from controllers import home
    
    if __name__ == '__main__':
        settings = {
            # 模板路径配置
            'template_path': 'views',
            "cookie_secret": 'test-secret,'
        }
    
        application = tornado.web.Application([
            (r"/index", home.IndexHandle),
            (r"/admin", home.AdminHandle),
        ], **settings)
        application.listen(80)
        tornado.ioloop.IOLoop.instance().start()
    
    浏览器端检查`cookie`情况 服务器端输出`cookie`情况
    • self.set_cookie('name', 'test') 设置未加密的cookie, 键为'name', 值为test
    • self.set_secure_cookie('user', 'test') 设置加密cookie, 键为'user', 值为test. 设置加密cookie我们需要在配置中添加自定义的加密串(俗称对加密结果加盐)"cookie_secret": 'test-secret,'
    • name = self.get_cookie('name', None)获取指定key未加密的cookie的值
    • user = self.get_cookie('user', None) 获取指定key的加密后的cookie的值
    • 对于set_cookie()set_secure_cookie()都用以下常见参数
      • name 表示传入cookie的键
    • value 表示传入cookiename对应的值
    • domain=None 表示域名
    • expires=None 设置过期时间, 这里单位为秒
    • path="/" 表示当前的cookie在那些路径下有效, /表示当前域名下所有的路径均有效
    • expires_days=None 设置过期时间, 单位为天

    **接下来我们谈谈加密cookie的加密和解密原理: **

    加密过程
    • 解密时候将加密cookie中的base64(test)也就是加密后的值和时间戳再加上cookie_secret生成新的加密串和加密cookie中的加密串比较, 若相同则合法验证通过, 然后再通过反解加密base64(test)取其本来的值

    相关文章

      网友评论

        本文标题:Tornado框架04-cookie

        本文链接:https://www.haomeiwen.com/subject/hzmtnttx.html