У меня есть приложение Vue и API-интерфейс остальных компонентов Django.Один на локальном хосте: 8080 (приложение vue), а остальные API на локальном хосте: 8000.
Итак, я создал APIView, который должен регистрировать пользователя, когда он делает запрос на публикацию:
class LoginUserAPIView(APIView):
permission_classes = () # login should be accessed by anyone, no restrictions.
def post(self, request, format=None):
username = request.data['username']
password = request.data['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
user = UserSerializer(user)
return Response({'success': 'Logged in', 'user': user.data})
return Response({'wrong': 'username or password not correct, try again'}, status=status.HTTP_401_UNAUTHORIZED)
И я пытался получить сеанс пользователя от django с помощью axios:
login() {
this.isLoading = true;
return axios({
method: 'post',
url: 'http://localhost:8000/api/login_user',
data: {
username: this.name,
password: this.password
},
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
this.$store.commit('loginAuth', true); // setting isAuth to true in vuex store.
this.$store.commit('setUser', response.data.user); // to access the user object since I don't use django templates
this.$router.push({name: 'page'}); // redirect to random test page that requires authorization so I can see if everything went fine.
})
.catch(err => {
console.error(err);
if (err.response.status == 401) {
alert(err.response.data.wrong);
this.isLoading = false;
}
})
, но я был наивен и думал, что это сработает, поэтому, когда я проверял приложение vue на наличие файлов cookie или сеансов, ничего.
Как установить сеанс пользователя для отдельного приложения vue?
Заранее спасибо, извиняюсь за недостаток знаний.