我正在创建一个安装在各种不同站点上的小部件,并且每个站点都需要不同的用户。问题是,同一个人浏览可能会同时打开 2 个使用我的小部件的不同站点。这意味着我需要用户使用多个帐户同时登录到同一个 Django 站点。
据我了解,Django 通常假设每个会话只有 1 个用户登录。
解决这个问题的最简单和最有效的方法是什么?
我正在创建一个安装在各种不同站点上的小部件,并且每个站点都需要不同的用户。问题是,同一个人浏览可能会同时打开 2 个使用我的小部件的不同站点。这意味着我需要用户使用多个帐户同时登录到同一个 Django 站点。
据我了解,Django 通常假设每个会话只有 1 个用户登录。
解决这个问题的最简单和最有效的方法是什么?
我最终将每个站点的数据存储在用户的会话中,即session['site_id_1'] = user_obj_1,session['site_id_2'] = user_obj_2等...
我没有登录,而是将用户数据存储在适当的密钥中。我没有注销,而是删除了该站点的密钥。
我认为您必须重写会话中间件。在默认实现中,会话存储在数据库中,session_key 保存在 cookie 中,cookie_name 定义在settings.py.
因此,如果您编写自己的会话中间件,您可以为每个站点定义不同的 cookie 名称,并相应地从数据库中检索会话。django.contrib.sessions.middleware.SessionMiddleware是一个很好的模板。