React和Django会话问题在Postman上有效,但在浏览器中无效

2024-03-29 07:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我做错了什么。我试图用React前端和Django后端实现最简单的会话。我知道我的方法是不安全和糟糕的,但这只是大学的一个项目,我需要一些有效的东西,所以我应该在我的项目中做其他需要会议的事情

以下是我的后端如何查找登录名和会话信息:

@api_view(['POST'])
def login(request):
    data = request.data
    try:
        user = MyUser.objects.get(username=data.get('username'), 
                                  password=data.get('password'))
        request.session['uuid'] = user.id
        request.session.modified = True
    except MyUser.DoesNotExist:
        return HttpResponse("User does not exist.")
    return HttpResponse(request.session['uuid'])
@api_view(['GET'])
def getsession(request):
    if request.session.has_key('uuid'):
        return HttpResponse(request.session['uuid'])
    else:
        return HttpResponse(False)

当我尝试用Postman测试时,它总是有效的,我得到了想要的会话ID,但当我尝试用Axios post方法对react执行相同的操作时,它总是返回False。我不知道为什么?看起来Django在调用登录函数后会破坏会话,或者甚至不会创建会话。 以下是我的post方法在React中的外观:

function login(){
        axios.post('http://127.0.0.1:8000/evidencija/login/',{
            username: 'admin',
            password: 'admin'
        }).then(
            (response) =>{
                console.info(response.data)
                getSession()
            },
            (error) =>{
                console.log(error)
            }
        )
    }

Tags: 项目django方法datagetreturnuuidrequest
1条回答
网友
1楼 · 发布于 2024-03-29 07:42:15

某些浏览器(例如Chrome)提供的设置允许用户在关闭和重新打开浏览器后继续浏览会话。在某些情况下,这可能会干扰“浏览器关闭时会话过期”设置,并阻止会话在浏览器关闭时过期。在测试启用了会话在浏览器关闭时过期设置的Django应用程序时,请注意这一点

文件:https://docs.djangoproject.com/en/3.2/topics/http/sessions/#browser-length-vs-persistent-sessions

相关问题 更多 >