VueJs + Django login pomimo strzalu i dobrej odpowiedzi nie loguje na server

0

Czesc mam taki problem mam front w VueJS i REST'a w Django strzelam do loginu server odpowiada mi ze udalo sie zalogowac ale po wejsciu na server nie ma zalogowanego uzytkownika mial ktos poodbny problem?

Jak bedzie trzeba to zapodam Kod

ale moze jest cos o czym moglem zapomniec?

0

Albo zapodam Od razu

@permission_classes((AllowAny, ))
class UserLoginView(APIView):

    def get(self, request):
        if request.user.is_authenticated:
            return Response(UserRepresentationSerializer(request.user).data)
        return Response(status=302)

    def post(self, request, *args, **kwargs):
        user = authenticate(request,
                            username=request.data.get('username'),
                            password=request.data.get('password'))

        if user:
            login(request, user)
            return Response(UserRepresentationSerializer(user).data, status=200)
        return Response({'message': 'Login Failed'}, status=401)


[...]
    handleLogin: function(){
      this.$http.post(this.$API_URL + '/account/login/', {
        username: this.username,
        password: this.password
      }).then(response => {
        console.log(response)
      });
      this.$refs.loginBtn.disabled = true;
    },
[...]
0

Co to znaczy, że "po wejsciu na server nie ma zalogowanego uzytkownika"? Żaden token nie jest przypisany do użytkownika?
Pokaż middlewary, installed_apps i ustawienia DRFa

0

@iksde: wchodzac na server developerski Django powininem miec zaogowanego uzytkownika po prawej stronie na pasku a nie ma go tam tak jakby server go nie zalogowal

0

Front i back są wystawione na tym samym porcie?

0

Nie. A da sie wystawic 2 apki na 1 porce?

0

Tak, jeśli masz jakieś reverse proxy albo serwujesz front z Django. Problem polega na tym, że uderzanie na backend przez AJAX i wchodzenie bezpośrednio w przeglądarce na backend to dwie różne sesje, dlatego np. nie będziesz zalogowany w adminie po zalogowaniu się w apce frontowej. Dodatkowo nie polecam używać uwierzytelniania poprzez sesję wystawiając API. Poczytaj http://www.django-rest-framework.org/api-guide/authentication/ i użyj authtokena z DRFa. Możesz też wykorzystać gotowe widoki do logowania, rejestracji itp. z https://github.com/sunscrapers/djoser

1
Uczynny Wąż napisał(a):

Czesc mam taki problem mam front w VueJS i REST'a w Django strzelam do loginu server odpowiada mi ze udalo sie zalogowac ale po wejsciu na server nie ma zalogowanego uzytkownika mial ktos poodbny problem?

Jak bedzie trzeba to zapodam Kod

ale moze jest cos o czym moglem zapomniec?

Przede wszystkim, jeśli chcesz żeby Twoje API było RESTowe to zapomnij o sesji użytkownika. REST API zostaje zapytanie, przetwarza, ew. zmienia stan aplikacji (np operacją na bazie) i zwraca odpowiedź. Jest jak automat na infolinii - nie pamięta, że przed minutą dzwoniłeś w jakiejś sprawie. No chyba, że wystawił ticket XYZ i przedstawisz się informacją, że ty jesteś gościem od ticketa XYZ. w REST API jest to samo, jak chcesz przypomnieć aplikacji, że jesteś zalogowany, musi wystawić Ci token przy logowaniu i potem z każdym żądaniem wysyłasz token mówiąc "jestem tym gościem od ticketa XYZ", serwer sprawdzi czy taki ticket nie jest podrobiony lub nieważny i odpowie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1