会话已设置但未持久

时间:2018-11-23 17:32:02

标签: python django multi-tenant

问题

django.contrib.auth.login函数成功执行,但会话似乎没有持久。

代码

我正在创建自己的一组函数,以与Django服务器内部的AJAX客户端一起使用。

我在urls.py中有以下代码:

from django.contrib.auth import authenticate, login
from django.conf.urls import url
from django.http import JsonResponse
import json

def auth_login(request):
    username = json.loads(request.body)['username']
    password = json.loads(request.body)['password']
    user = authenticate(request, username=username, password=password)

    if user is not None and user.is_active:
        login(request, user)
        return JsonResponse({}, status=200)
    else:
        return JsonResponse({}, status=400)

urlpatterns = [ 
    url(r'auth/login/', auth_login, name='login')
]

详细信息

  • 如上所述,对login()的调用成功。 request.session的设置正确,如果可以从auth_login进行访问,我就可以访问。在后续请求中,request.session不存在,并且django.contrib.auth.get_user返回AnonymousUser

  • (可能是相关的)我也在使用看似受欢迎的https://django-tenant-schemas.readthedocs.io/en/latest/。该urls.py文件位于每个租户的应用程序中,因此用户实际上是在tenantname.hostname.com/tenant/auth/login/上进行身份验证。

  • 已正确设置承租人的django_session表。对于每次尝试登录,我都可以看到session_keysession_dataexpire_data

  • 尝试登录后tenantname.hostname.com的cookie为空。

我还没有其他想法可以尝试使我找到解决方案。

问题

  • 关于此会话为何未真正保存到cookie中的任何想法?

    OR

  • 关于我还可以尝试哪些方法的思考,可能会导致我找到解决方案?

0 个答案:

没有答案