Хранение данных в сессии в Angular. Хранение данных в сессии в Angular. angular session auth localstorage

Хранение данных в сессии в Angular.

Open in new window

Анализ ответа авторизации.

login() { this.http_service.login(this.username, this.password).subscribe((data: any) => { console.log(data); if(data[‘status’] == 1) { alert(data[‘message’]); } else { localStorage.setItem(‘is_auth’, true); }

  })

}

Устанавливаем переменную is_auth в хранилище localStorage.

localstorage angular

Возвратим подпись пользователя от сервера при авторизации.

Для этого воспользуемся библиотекой rest_framework.authtoken из поставки Django REST framework.

Документация

class LoginView(APIView):
    def post(self, request):
        payload = json.loads(request.body.decode('utf-8'))
        try:
            user = User.objects.get(username=payload['login'])
            if not user.check_password(payload['password']):
                 return Response({"status": 1, "message": "Error, wrong password!"})
            else:
                try:
                    token = Token.objects.get(user=user)
                except:
                    token = Token.objects.create(user=user)
                return Response({
                                 "status": 0, 
                                 "message": "ok", 
                                 "token": token.key
                                 })
        except Exception as e:
            return Response({"status": 1, "message": "Error, wrong login!", "exeption": str(e)})

Сохраним токен в приложении ангуляр.

  login() {
      this.httpService.login(this.username, this.password).subscribe((data: any) => {
          console.log(data);
          if (data.status === 1) {
              alert(data.message);
          } else {
             localStorage.setItem('is_auth', 'true');
             localStorage.setItem('user_token', data.token);
          }

      });
  }

localstorage angular

Сделаем редирект на главную при успехе.

import {Router} from "@angular/router"
...
constructor(private http_service: LoginService, private router: Router) { }
...
  login() {
      this.http_service.login(this.username, this.password).subscribe((data: any) => {
         console.log(data);
         if(data['status'] == 1) {
          alert(data['message']);
        } else {
          localStorage.setItem('is_auth', true);
          localStorage.setItem('user_token', data.token);
          this.router.navigate(['/index'])
        }
      })
  }

Other topics