我一直在做一个小项目,我开始想知道在用户登录或注销后如何保留一些数据。
例如,假设用户正在向他的购物车添加商品,但他没有登录。默认情况下,Django会话在用户登录或注销后生成新的session_id。当用户添加5个产品到他的购物车时,然后他登录,然后他的购物车将被清除。
如何在用户数据中实现持久化元素?例如,我是否应该使用一些信号或某种中间件来将购物车从旧会话绑定到新会话?
我的主要目标是保证它的安全,所以我不想禁用某些安全机制。
发布于 2014-10-22 19:54:02
您必须使用数据库支持的会话。从文档中:
您需要在您的INSTALLED_APPS设置中添加'django.contrib.sessions‘。
配置安装后,运行manage.py migrate以安装存储会话数据的单个数据库表。
然后,您必须确保在注销/登录过程中不会调用session.flush(),这意味着避免使用将调用session.flush()的django.contrib.auth.logout(),它也是在django.contrib.login()中调用的。自行login and logout用户,以避免丢失会话数据。login/logout的源码。
发布于 2017-01-25 18:39:37
作为一种安全措施,会话将在登录/注销时刷新。如果您想保留一些变量,可以在以下位置使用解决方案:
https://stackoverflow.com/a/41849076/146289
它基本上涉及到备份旧值,然后在新会话中恢复它们。
https://stackoverflow.com/questions/26506102
复制相似问题