将CSRF-TOKEN添加到angularJs 2中
我正在使用Django和AngularJs2创建一个网站 当我创建登录表单然后提交表单时,Django显示了一个错误: 禁止(CSRF令牌丢失或不正确。) 我知道Django希望我添加CSRF令牌,但我不知道如何添加 更新 这是user.service.ts:将CSRF-TOKEN添加到angularJs 2中,angularjs,django,Angularjs,Django,我正在使用Django和AngularJs2创建一个网站 当我创建登录表单然后提交表单时,Django显示了一个错误: 禁止(CSRF令牌丢失或不正确。) 我知道Django希望我添加CSRF令牌,但我不知道如何添加 更新 这是user.service.ts: import { Injectable } from '@angular/core'; import { Http, Headers } from '@angular/http'; @Injectable() export class
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(['']);
}
});
}
}
或者,如果你想要csrf,请将其与你的
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
没有足够的代码来表示问题,请参阅,因为它应该会有所帮助。如果我使用@csrf_emption,DJANGO将显示错误消息:禁止(未设置csrf cookie。):/accounts/login,前端显示错误消息:响应状态:403禁止URL:$httpProvider.defaults.xsrfHeaderName='X-CSRFToken'$httpProvider.defaults.xsrfCookieName='csrftoken';我不知道如何使用它,在哪里我可以把它放入文件代码!????
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
$httpProvider.defaults.xsrfCookieName = 'csrftoken';