Python学习之旅

Tornado Cookies 登录认证 异步

2018-01-03  本文已影响19人  依旧丶森

1.Cookie

    # 向cookie中存储数据
    self.set_cookie("info", "msg")
    #取cookie中的数据
    info_ = self.get_cookie("info")

    #但上面简单的cookies直接显示数据,容易被他人利用,使用加密的cookie
    # 向cookie中存储数据
    self.set_secure_cookie("info", "msg")
    info_ = self.get_secure_cookie("info")
    #添加混淆码,加密cookie
    app = Application(
        [......],
        #混淆码一般用 base64.b64encode 格式的随机码
        cookie_secret='yYsdHBeySj2XPhzewQYsycmLHRwXsko9lz4c3sEGLMnJix0cF7JKPZc+HN7BBizJ'
    )
    #清除cookie
    clear_cookie()

cookie有时间设置,通过self.cookie(name, value, expires_days)来给添加一个cookie数据,如果不设置过期时间expries_days,该cookie就是一个会话级别的临时cookie,一旦会话超时或者浏览器完全关闭的情况下,cookie中存储的数据就会丢失;如果设置了过期时间expires_days该cookie就是一个永久cookie,永久的cookie默认为30天时限。
永久时间设置:为None时,关闭会话立即失效, 小于等于0时cookie没作用,创建后立即过期。

    #转码encode
    #解码decode
    #禁止跨域请求,APP添加设置
    xsrf_cookies=True, 
    #前端网页请求时添加令牌
    {% module xsrf_form_html() %}

2.登录认证

    #导入登录认证模块
    from tornado.web import  authenticated
    #在函数处理中添加 get_current_user()函数,判断current_user当前用户是否登录的认证。
    #重写get_current_user()函数~指定在什么情况下用户是登录状态!
    def get_current_user(self):
        name = self.get_secure_cookie("login")
        if name is not None:
            return True
        return False

    # authenticated装饰器~用于判断用户是否具有登录状态
    @authenticated
    def get(self):
        # 获取cookie中的数据
        name = self.get_secure_cookie("login")
        self.render("index.html", name=name)

    if __name__ == "__main__":
        app = Application(
            [......],   
            #设置错误信息显示是否详细
            debug=True,
            #这是登录认证判断没有登录(cookie ‘login’ 没有用户)时跳转的路由
            #当完成登录时会自动返回当时请求的页面。有记忆功能。
            login_url='/login',
    )

3.异步

附加:
后端同步与异步的区别:通过siege压力测试工具压力测试,可以看出同步与异步的差距。
当并发量与访问时间相同时,异步的处理效率远高于同步的方式。

4.长连接

一般实现聊天室,网页客服等

上一篇 下一篇

猜你喜欢

热点阅读