Pas*_*day 5 python session flask web
我正在使用Python + Flask开发我的第一个大型Web应用程序项目,并在规划基本级别体系结构的最佳实践中寻求建议。
我不打算重新发明轮子,所以我将使用Flask-login来处理登录管理,并使用Flask会话来处理最基本级别的会话变量,例如用户ID和自定义会话ID。
默认情况下,Flask会话基于cookie,并且基本上仅在客户端存在。但是,将需要一些将定期读取的会话变量(即用户权限,自定义应用程序配置),我感到很尴尬,无法在每个页面请求和响应中将所有这些信息都包含在cookie中。
由于可以通过在登录时引入唯一的会话ID在服务器端识别会话,因此可以使用某些服务器端会话变量管理。从数据库在服务器端读取此数据也感觉像是不必要的开销。
因此,我的问题是,如何在服务器端处理会话变量的最有效方法是什么?也许这可能是基于内存的解决方案,但是我担心不同的Flask应用程序请求可能会在不同的线程中执行,这些线程不会共享存储在内存中的会话数据,或者在同时读写的情况下导致冲突。
你的直觉是正确的,但这可能不是正确的方法。
会话数据应该只是短暂的信息,丢失和重新创建不会太麻烦。例如,用户只需再次登录即可恢复。
配置数据或服务器上必需的并且必须在注销后继续存在的任何其他数据不是会话的一部分,应存储在数据库中。
现在,如果您确实需要轻松地在客户端保留此信息,并且丢失也不会造成太大问题,那么请使用会话 cookie 来表示登录/注销状态,并使用具有较长生命周期的永久 cookie 来表示其余状态。配置信息。
如果信息的大小太多,那么我能想到的唯一选择是将数据(除了登录/注销状态之外)存储在数据库中。
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |