cookie
- 客户端会话技术
- 数据都是存储在浏览器中
- 支持过期
- 不能跨域名
- frame 标签
- 可以直接加载整个网站
- 不能跨浏览器
- cookie是通过Response来进行操作
- flask中的cookie可以直接支持中文
- flask对cookie中的内容做了编码
设置cookie时使用 Response对象
resp.set_cookie('key', value)
获取cookie时使用Request对象
request.cookies.get('key')
vi App/views.py
@blue.route('/home/')
def home():
username = request.cookies.get("user")
return render_template('home.html', username=username)
@blue.route('/login/', methods=["GET", "POST"])
def login():
if request.method == "GET":
return render_template('login.html')
elif request.method == "POST":
username = request.form.get("username")
resp = Response(response="Login Success: %s" % username)
resp.set_cookie('user', username)
return resp
@blue.route('/logout/')
def logout():
resp = redirect(url_for('first_blue.home'))
resp.delete_cookie('user')
return resp
访问:http://127.0.0.1:5000/home/
点击Login
输入用户名再次访问 http://127.0.0.1:5000/home/
点击Logout即可退出
打开浏览器检查工具也可看到cookie中有user=Sajor;
源码地址: https://github.com/565785929/StudyFlask/commit/bc552f16a2347aa0e6f154807fb07a74a926340c#diff-c5db64367d86638f03cdd41803ac4392
Session
- session
- 服务端会话技术
- 对数据进行数据安全操作
- 默认在内存中
- 不容易管理
- 容易丢失
- 不能多台电脑协作
session['user'] = username
获取session时使用Session对象
session.get('user')
使用时需在manage.py中设置SECRET_KEY
vi manage.py
app.config['SECRET_KEY'] = "Study Flask"
重新访问可以看到cookie变为session
flask-session
我们知道session是存在内存中的,这不利管理,容易丢失,不能多台电脑协作,所以我们使用插件来将session存入redis数据库中。
文档:https://pythonhosted.org/Flask-Session/
安装:pip install Flask-Session
只需在manage.py中简单设置两条
from flask_session import Session
app.config['SESSION_TYPE'] = 'redis'
Session(app)
启动即可
- flask-session 默认有效期31天
- 设置session时使用 Session对象