当前位置:
首页 >
Flask笔记-session安全问题(避免任务重复提交)
发布时间:2025/3/15
31
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Flask笔记-session安全问题(避免任务重复提交)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
防止同一个session多次提交某任务
此处的url提交后,会处理30s。
当第一次提交session时,会延迟30s然后返回数据:
当在30s内,同样的session输入了此url:
302重定向,将其重定向到sessionsafetest中。
此例子原理是这样的:
在session存入一条user_info的数据
Flask会默认把session数据放到客户端的cookie中:
新增RequestManager类,将这个数据记录下来。在服务器处理结束后,移除这个数据。
在请求之前,如果发现RequestManager类中有这个session数据了,就让其重定向到其他页面。
相关代码如下:
class RequestManager:currentUser = set()@staticmethoddef add(user):RequestManager.currentUser.add(user)@staticmethoddef remove(user):RequestManager.currentUser.remove(user)@staticmethoddef isSessionExist(user):for item in RequestManager.currentUser:if item == user:return Truereturn False@staticmethoddef printAll():print(RequestManager.currentUser)拦截器相关的:
@app.after_request def after_request(response):if request.path == "/sessionsafetest":return responseuser = session.get('user_info')try:RequestManager.remove(user)except Exception as e:traceback.print_exc()print(RequestManager.printAll())return response#做个实验,某个任务要处理30s @app.route("/task30s", methods=['GET']) def goTask():time.sleep(30)result = {"msg" : "success"}return jsonify(result)@app.route("/sessionsafetest", methods=['GET']) def getSeesionSafePage():result = {"msg" : "session is running"}return jsonify(result)
总结
以上是生活随笔为你收集整理的Flask笔记-session安全问题(避免任务重复提交)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Linux工作笔记-重置密码解决MySQ
- 下一篇: Qt文档阅读笔记-Custom Item