flask项目Session(会话)

Cookie是存储在客户端的,而Session是存储在服务端的,也可以将Session称为服务端的Cookie.因为Cookie和Session的使用方式都和字典一样,通过key存储和获取值。
服务端会为每一个客户端浏览器创建一个Session对象。也就是说,客户端浏览器不仅仅可以在本地将数据保存在Cookie中,还可以将大量的数据存储到服务端的Session对象中。
在flask中使用Session需要如下几步:

  1. 导入flask模块中的session变量
  2. 在设置Session时将session.permanent属性设为True
  3. 设置app.secret_key,用于保存到客户端的Session-Cookie-id加密
  4. 通过app.permanent_session_lifetime属性设置Session的有效期

实例:创建三个路由用于模拟登陆和注销的过程
flask_session.py

from flask import Flask,request,session
from datetime import *
app=Flask(__name__)
#用于显示登陆状态的根路由
@app.route('/')
def index():
    #如果Session中有username,表明已经登陆
    if 'username' in session:
        return '已经登陆 %s' % session['username']
    return '未登陆'
#用于登陆的/login路由
@app.route('/login')
def login():
    session.permanent=True
    #直接通过GET请求的username字段指定用户名
    #并将用户名以Key为username的形式保存到Session对象中
    session['username']=request.args.get('username')
    return '登陆成功'
#注销登陆状态的/logout路由
@app.route('/logout')
def logout():
    #将username从Session对象中弹出
    session.pop('username',None)
    return '注销成功'
#设置用于加密的key
app.secret_key='geekori.com'
#设置session的有效期(20s)
app.permanent_session_lifetime=timedelta(seconds=20)

if __name__=="__main__":
    app.run()

运行程序,浏览器输入http://localhost:5000
这时Session中还没有username字段
使用http://localhost:5000/login?username=Sandra
在这里插入图片描述
然后再访问http://localhost:5000,会在浏览器显示已经登陆和登陆用户名为Sandra
在这里插入图片描述
当使用http://localhost:5000/logout注销登陆后,再访问http://localhost:5000,会显示未登陆的信息。由于过期时间是20s,所以即使不注销登陆,过20s后,再访问,仍然是显示未登陆的信息。

发布了17 篇原创文章 · 获赞 2 · 访问量 616

猜你喜欢

转载自blog.csdn.net/qq_45323012/article/details/104061215