register - django rest token expiration
No se puede iniciar sesiĆ³n en el marco de descanso Angular2/Django (1)
Utilicé la autenticación de sesión de Django con Angular2 de esta manera:
loginUser (credentials: any): Observable<Profile> {
let headers = new Headers({ ''Content-Type'': ''application/json''});
headers.append("X-CSRFToken", this.utils.getCookie(''csrftoken''));
let options = new RequestOptions({ headers: headers, withCredentials: true });
return this.http.post(this.userUrl + ''auth/'', credentials , options)
.map(res => res.json())
.catch(this.handleError);
}
En la vista basada en la clase Django:
@method_decorator(csrf_protect)
def post(self, request, format=None):
user_data = request.data
self.logger.info(''Authenticating user {0}''.format(user_data[''username'']))
user = authenticate(username=user_data[''username''], password=user_data[''password''])
login(request, user)
Usé el marco de descanso de Django. Pero sugiero que django-jwt auth en lugar de sesión (mucho menos dolor :)).
Estoy usando autenticación de sesión con el siguiente método de servicio Angular 2.
login(username : string, password : string) {
var data = {
username: username,
password: password
}
return this.http.post(environment.apiEndpoint + ''login'', data)
.catch((error) => {
return Observable.throw(error.json());
});
}
Resultado: la respuesta contiene csrftoken y sessionid en el valor setcookie del encabezado, pero es ignorado por angular.
Agregar con credenciales causa un error de token no válido de CSRF.
¿Cómo iniciar sesión usando Angular 2 y Django rest framework con esquema de autenticación de sesión? Thnx de antemano!