Я делаю сайт, используя Django и AngularJs2.Добавить CSRF-TOKEN в angularJs 2
Когда я создал форму Войти затем отправить форму, Джанго показывает ошибку:
forbidden (CSRF token missing or incorrect.)
Я знаю, Django хочет, чтобы добавить маркер CSRF, но я не знаю, как.
UPDATE это user.service.ts:
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
@Injectable()
export class UserService {
private loggedIn = false;
constructor(private http: Http) {
this.loggedIn = !!localStorage.getItem('auth_token');
}
login(email:string, password:string) {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http
.post(
'/accounts/login',
JSON.stringify({ email, password }),
{ headers }
)
.map(res => res.json())
.map((res) => {
if (res.success) {
/* localStorage.setItem('auth_token', res.auth_token);
this.loggedIn = true; */
console.log(res);
}
return res.success;
});
}
logout() {
localStorage.removeItem('auth_token');
this.loggedIn = false;
}
isLoggedIn() {
return this.loggedIn;
}
}
login.component.ts:
// login.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { UserService } from './user.service';
@Component({
selector: 'login',
template: `...`
})
export class LoginComponent {
constructor(private userService: UserService, private router: Router) {}
onSubmit(email, password) {
this.userService.login(email, password).subscribe((result) => {
if (result) {
this.router.navigate(['']);
}
});
}
}
Недостаточно кода для представления проблемы –
См. Https://docs.djangoproject.com/en/1.10/ref/csrf/#ajax, поскольку это должно помочь. Как только вы берете значение, отправьте его как дополнительные заголовки, как показано Себастьяном. – Arnaud