欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tornado基础入门(三) 用户身份验证框架、安全机制

程序员文章站 2024-03-19 14:18:46
...

一、安全cookie机制

  1. tornado通过requestHandler的set_cookie()方法和get_cookie()方法对cookie进行操作
  2. tornado通过tornado.web.Application初始化时赋予参数cookie_secret对cookie进行加密
'''
通过RequestHandler get_cookie()和set_cookie()方法,能够方便的对cookie()进行读写。
'''
import tornado.web
from tornado.web import Application
import uuid
import tornado.ioloop


class MainHandler(tornado.web.RequestHandler):

    def get(self, *args, **kwargs):
        if not self.get_cookie("session"):
            self.set_cookie("session", str(uuid.uuid4()))
        else:
            print(self.get_cookie("session"))
            self.write("your session was set!")


if __name__ == "__main__":
    app = Application([
        (r"/hello", MainHandler)
    ], cookie_secret="SECRET_DONT_LEAK")
    app.listen(8008)
    tornado.ioloop.IOLoop.current().start()

  关键点和技巧

  • tornado.web.Application对象初始化时,赋予cookie_secret参数,该参数用来讲cookie加密。
  • 在读取cookie的时候,用get_secure_cookie()方法替换get_cookie()方法。
  • 在写cookie的时候,用set_secure_cookie()方法替换set_cookie()方法。
'''
使用get_secure_cookie()和set_secure_cookie()替换原来的get_cookie()和set_cookie()方法
'''
import tornado.web
from tornado.web import Application
import uuid
import tornado.ioloop


class MainHandler(tornado.web.RequestHandler):

    # get_secure_cookie()获取了最原始的cookie,get_cookie()方法获取到加密后的cookie
    def get(self, *args, **kwargs):
        if not self.get_secure_cookie("session"):
            self.set_secure_cookie("session", str(uuid.uuid4()))
        else:
            print(self.get_secure_cookie("session"))
            print(self.get_cookie("session"))
            self.write("your session was set!")


if __name__ == "__main__":
    app = Application([
        (r"/hello", MainHandler)
    ], cookie_secret="SECRET_DONT_LEAK")
    app.listen(8008)
    tornado.ioloop.IOLoop.current().start()

访问localhost:8008/hello, 打印结果:

b'cdfa1bf0-7f2f-4a4b-b499-0f082f293c0a'
2|1:0|10:1602836493|7:session|48:Y2RmYTFiZjAtN2YyZi00YTRiLWI0OTktMGYwODJmMjkzYzBh|940288a73f7fbb72b02ec96c70af1bae07c196c554fef1021584743e421a8501