Использование 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
.
Заранее спасибо.