我想知道我做错了什么。我试图用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)
}
)
}
某些浏览器(例如Chrome)提供的设置允许用户在关闭和重新打开浏览器后继续浏览会话。在某些情况下,这可能会干扰“浏览器关闭时会话过期”设置,并阻止会话在浏览器关闭时过期。在测试启用了会话在浏览器关闭时过期设置的Django应用程序时,请注意这一点
文件:https://docs.djangoproject.com/en/3.2/topics/http/sessions/#browser-length-vs-persistent-sessions
相关问题 更多 >
编程相关推荐