概念
Cookie 一般保存在浏览器端,返回数据的时候使用request.make_response来实现存储,因为在客户端,所以只能设置过期而不能做到正真的删除。
Session 一般保存在服务器端,设置的时候直接使用requset.session就可以,而且session相当于一个全局的字典变量;
Token的获取和实现,需要一个方式来生成和验证 JWT(JSON Web Tokens)。通过安装 Flask-JWT-Extended 来实现:
pip install Flask-JWT-Extended
在使用之前必须需要初始化一个JWTManger。
实现
from flask import Flask, make_response, request,session,jsonify
from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity,JWTManager
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'jwt_secret_key'
app.config['SECRET_KEY'] = 'session_secret_key'
jwt = JWTManager(app)
@app.route('/set_session')
def set_session():
session['name'] = 'test'
return 'set session success'
@app.route('/get_session')
def get_session():
return session.get('name')
@app.route('/del_session')
def del_session():
session.pop('name')
return 'delete session success'
@app.route('/set_token')
def set_token():
identity = 'hello world'
access_token = create_access_token(identity=identity)
return jsonify(access_token = access_token,status = 'ok')
@app.route('/get_token')
@jwt_required()
def get_token():
identity = get_jwt_identity()
return identity
@app.route("/set_cookie")
def set_cookie():
resp = make_response("success")
'''
设置cookie,默认有效期是临时cookie,浏览器关闭就失效
可以通过 max_age 设置有效期, 单位是秒
'''''
resp.set_cookie("Itcast_1", "python_1")
resp.set_cookie("Itcast_2", "python_2")
resp.set_cookie("Itcast_3", "python_3", max_age=3600)
return resp
@app.route("/get_cookie")
def get_cookie():
"""
获取cookie,通过reques.cookies的方式,
返回的是一个字典,可以用get的方式
"""
print(request.headers)
cookie_1 = request.cookies.get("Itcast_1") # 获取名字为Itcast_1对应cookie的值
return cookie_1
@app.route("/delete_cookie")
def delete_cookie():
"""
删除cookie,通过delete_cookie()的方式,
里面是cookie的名字
这里的删除只是让cookie过期,并不是直接删除cookie
"""
resp = make_response("del success")
resp.delete_cookie("Itcast1")
return resp
if __name__ == '__main__':
app.run(debug=True)
总结
无论Cookie,亦或Session,还是Token,都是对用户身份的一个认定方式。
本文著作权归作者 [ zealoner ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。