• 技术文章 >Python框架 >Flask

    flask框架中的cookie和session

     Ly Ly2020-05-13 16:30:44转载5074
    文章介绍了flask框架中的cookie和session。Session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

    WEB -> cookie & session

    由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。

    服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。

    Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。

    flask中的session和cookie

    flask中的session机制是将敏感数据加密后放入session,然后将session存入cookie,下次请求时,直接从浏览器发过来的cookie中获取session,再从中获取数据进行解密

    这样操作更节省服务开销,因为数据均存储到客户端

    大家可能会担心这种做法的安全性,因为数据全部存储在本地浏览器,很容易被盗取,但是安全性总是相对的,而且flask里面对session也有自己的特殊加密算法,所以也不用太过于在意安全方面的问题

    Session操作

    1.使用sessiom需要先导入session

    from flask import session

    2.SECRET_KEY

    一定记得要设置SECRET_KEY,用于加密数据,并且如果每次启动服务器你的秘钥都在变化的话就不能再用之前的SECRET_KEY进行解密了,我们此处就可以将它设置成固定值,对于配置文件里面变量的设置,前文讲过,如果数据量比较多就单独在config.py里面集成,但是如果只是很微量的几条设置,那么就可以在主文件里简单进行指令设置即可,类似这里的:

    #生成随机的24位字符串
    app.config['SECRET_KEY'] = os.urandom(24)

    3.session值添加

    因为session和cookie都是键值对形式的字典,所以直接用字典方法添加就可以了

    session['username'] = 'user1'

    4.session值删除

    #1.单条删除
    session.pop('username')
    del session['username']
    #2. 全部清除
    session.clear()

    5.session值获取

    session.get('username')
    session['username']

    6.设置过期时间(如果不设置,默认浏览器退出即自动结束)

    #在config.py中配置session参数PERMANENT_SESSION_LIFETIME,这个值的数据类型是datetime.timedelay类型
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) 
    session.permanent = True  #默认为31天
    专题推荐:flask cookie session
    上一篇:python如何编写简单网页 下一篇:Flask与Django对比

    相关文章推荐

    • Flask中的Cookie和Session是什么• python如何获取cookie• Python获取cookie有什么用• python中的session是什么• python怎么获取网页的cookie(cookies)

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网