vue.js Cookie未加载到浏览器

lvjbypge  于 2023-10-23  发布在  Vue.js
关注(0)|答案(1)|浏览(172)

我在Django REST框架中有这个LoginView。

class LoginView(APIView):
    serializer_class = LoginSerializer
    authentication_classes = [SessionAuthentication, ]

    def post(self, request):
        if request.user.is_authenticated:
            return Response({'message': 'User is already logged in'}, status=status.HTTP_200_OK)
        serializer = self.serializer_class(data=request.data)

        if serializer.is_valid():
            email = serializer.validated_data.get('username')
            password = serializer.validated_data.get('password')
            user = authentication.authenticate(request, username=email, password=password)

            if user is not None:
                login(request, user)
                response = Response({'message': 'User logged in successfully'}, status=status.HTTP_200_OK)
                return response
            else:
                return Response({'message': 'Invalid credentials'}, status=status.HTTP_401_UNAUTHORIZED)
        else:
            # If the serializer is not valid, return validation errors
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

vue.js应用程序中axios的此请求

<script setup>

import axios from 'axios'
import {ref, onMounted} from 'vue'

const email = ref("");
const password = ref("");
axios.defaults.withCredentials = true


function login() {
    axios.post('http://127.0.0.1:8000/api/login/', {
        username: email.value,
        password: password.value,
    })`your text`
}
</script>

当我发出请求时,cookie(会话)被加载到数据库,但没有加载到浏览器。你有什么建议吗?
当我从www.example.com端点发出请求127.0.0.1:8000/api/login时,它按预期工作。当我通过axios从localhost:5173发出请求时,它不起作用。

7lrncoxx

7lrncoxx1#

在django restframework文档中,很明显SessionAuthentication应该与标准的Django登录页面一起使用。
警告:在创建登录页面时,请始终使用Django的标准登录视图。这将确保您的登录视图得到适当的保护。
SessionAuthentication是一个使用django标准页面和restframework提供的API路由的便利。如果你不打算在你的应用中使用django标准页面,最好使用另一种身份验证机制,比如BasicAuth

相关问题