django 在任何地方都提供相同的会话

Posted

技术标签:

【中文标题】django 在任何地方都提供相同的会话【英文标题】:django provide same session everywhere 【发布时间】:2013-04-27 04:21:50 【问题描述】:

我正在开发一个使用外部基础来验证用户身份的 django 应用程序。 登录后,一些信息被检索到会话。 问题是这个初始化的会话与相同的 session_id 相同,无论我使用什么浏览器或桌面,而无需重新验证...

身份验证

def login(request):
    if request.method == 'POST':
        login = request.POST["login"]
        password = request.POST["password"]
        #do something to authenticate by requesting an url
        request.session['infos'] = #infos string recieved
        return HttpResponseRedirect(reverse('WebSite:index'))

MIDDLEWARE_CLASSES 包含 django.contrib.sessions.middleware.SessionMiddleware

SESSION_ENGINE = "django.contrib.sessions.backends.db"

INSTALLED_APPS 包含 django.contrib.sessions

这样做的另一个影响是,在某处通过身份验证后,当我在其他地方尝试时遇到 CSRF 失败...

谢谢你帮助我!

【问题讨论】:

我似乎不明白需要实现什么或知道什么。请详细说明。 我可能没有很好地描述我的问题,但很明显我的问题是:为什么我网站的每个访问者都没有自己的会话?我怎样才能让每个访问者都有自己的会话? 【参考方案1】:

答案在缓存中:

缓存使 django 在每次请求时都提供相同的 cookie,并具有相同的 session_id。所以我停用了它,直到我用更好的设置设置缓存。

【讨论】:

以上是关于django 在任何地方都提供相同的会话的主要内容,如果未能解决你的问题,请参考以下文章

如果 render_to_response 方法没有包含在任何地方,为啥我会收到 ImportError?

几乎在任何地方都可以使用 async/await 吗?

返回相同对象列表的 RESTful 方式

大结果在任何地方都很慢,但在本地

使用 Laravel 使自定义类在任何地方可用

java.util.Observable 是不是在任何地方使用?