django 1.9通过ajax请求更改密码后如何保持会话

时间:2019-02-19 08:18:50

标签: django session authentication passwords

我具有通过Ajax更新用户数据的功能

def ajax_update(request):
    if request.method == 'POST':
    update_form = forms.UserUpdateForm(request.POST, instance=request.user)
    if update_form.is_valid():
        update_form.save()
        response['status'] = 'success'
        return JsonResponse(response)

和一个UserUpdateForm

class UserUpdateForm(forms.ModelForm):

    class Meta:
        model = User
        exclude = ['password']

    def save(self, commit=True):
        instance = super(UserUpdateForm, self).save(commit=False)
        instance.set_password(self.cleaned_data['password_1'])
        instance.save()
        return instance

执行set_password并保存实例后,它返回“成功”消息。

但是,当我重新加载页面时,它的会话已过期

通过ajax更改密码后是否有保持会话的方法?

1 个答案:

答案 0 :(得分:1)

这是documented here。您应该使用update_session_auth_hash()函数。

但是在这种情况下,由于还会生成新的哈希,因此您还应该在JavaScript中更新会话Cookie。