Использование request.session в django с angular

У меня есть работающее приложение Django, использующее аутентификацию сеанса. Я использую request.user в моих шаблонах и представлениях. Я также использую несколько переменных сессии, например requst.session['some_variable'].

В настоящее время я использую Django для бэкенда, а также для фронтенда, т.е. html-шаблонов, статических файлов и т.д. Все работает отлично.

Но я хочу перейти на angular для своей фронтенд-части. Я пробовал использовать аутентификацию JWT из моего приложения angular.

Я получаю JWT-токен от django-restframework, это мой служебный файл

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
 
@Injectable()
export class UserService {
 
  // http options used for making API calls
  private httpOptions: any;
 
  // the actual JWT token
  public token: string;
  public sessionid: string;
  // the token expiration date
  public token_expires: Date;
 
  // the username of the logged in user
  public username: string;
 
  // error messages received from the login attempt
  public errors: any = [];
 
  readonly APIUrl = "http://127.0.0.1:8000";
  constructor(private http: HttpClient) {
    this.httpOptions = {
      headers: new HttpHeaders({'Content-Type': 'application/json'})
    };
  }
 
  // Uses http.post() to get an auth token from djangorestframework-jwt endpoint
  public login(user) {
   this.http.post(this.APIUrl + '/api-token-auth/', JSON.stringify(user), this.httpOptions).subscribe(
      data => {
        this.updateData(data['token']);
      },
      err => {
        this.errors = err['error'];
      }
    );
  }
 
  // Refreshes the JWT token, to extend the time the user is logged in
  public refreshToken() {
    this.http.post(this.APIUrl + '/api-token-refresh/', JSON.stringify({token: this.token}), this.httpOptions).subscribe(
      data => {
        this.updateData(data['token']);
      },
      err => {
        this.errors = err['error'];
      }
    );
  }
 
  public logout() {
    this.token = null;
    this.token_expires = null;
    this.username = null;
  }
 
  private updateData(token) {
    this.token = token;
    this.errors = [];
    console.log(this.token);
 
   
  }
 
}

Теперь я могу использовать этот токен в другом компоненте, как

check(token){
    let httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'Authorization': 'JWT ' + this._userService.token
      }),
    };

Я получаю этот токен в моих представлениях Django в заголовках запроса, но я не могу получить request.user от этого токена, также я не могу получить доступ к переменным request.session от этого токена.

У меня есть код бэкенда на django, который зависит от переменных request.session, но с angular я не могу получить доступ к этим переменным

Буду очень признателен, если я смогу получить учебник по использованию аутентификации на основе сессии в Django с angular, где я смогу использовать переменные request.session, а также получить доступ к request.user.

Заранее спасибо.

Вернуться на верх