Tornado框架04-cookie

Tornado框架04-cookie

來自專欄 貓xian森的全棧之旅

cookie的本質其實就是在瀏覽器端保存的鍵值對, 每當瀏覽器端發送一次請求, 都會將這些鍵值對附加在請求中並發送給伺服器端.

我們簡單使用下python中的cookie:

home.py文件:

#!/usr/bin/env python# -*- coding:utf-8 -*-import tornado.webclass 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): passclass AdminHandle(tornado.web.RequestHandler): def get(self, *args, **kwargs): name = self.get_cookie(name, None) user = self.get_cookie(user, None) print(name: , name, "
user: ", user)

start.py文件:

#!/usr/bin/env python# -*- coding:utf-8 -*-import tornado.web, tornado.ioloopfrom controllers import homeif __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()

  • 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 表示傳入cookie的name對應的值
    • domain=None 表示域名
    • expires=None 設置過期時間, 這裡單位為秒
    • path="/" 表示當前的cookie在那些路徑下有效, /表示當前域名下所有的路徑均有效
    • expires_days=None 設置過期時間, 單位為天

接下來我們談談加密cookie的加密和解密原理:

  • 解密時候將加密cookie中的base64(test)也就是加密後的值和時間戳再加上cookie_secret生成新的加密串和加密cookie中的加密串比較, 若相同則合法驗證通過, 然後再通過反解加密base64(test)取其本來的值

?
推薦閱讀:

入門numpy(上)【解讀numpy官方文檔】
使用Flask開發簡單博客的教程(上)
精通Python網路爬蟲之網路爬蟲學習路線
碎片化學習Python的又一神作:termux
草根學Python(九) 面向對象

TAG:Python | Python框架 | Python教程 |