我正在使用django + angular 2
我正在使用rest_framework_jwt和这样的网址
url(r'^api/api-token-auth/', obtain_jwt_token),
url(r'^api/settings/?$', views.SettingsValues.as_view()),
我的观点是
class SettingsValues(generics.ListAPIView):
serializer_class = SettingsSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def get_queryset(self):
queryset = Settings.objects.all()
queryset = queryset.filter(user=self.request.user.id)
print self.request.user
return queryset
我的服务是:
getSettings() : Promise <SettingsValues> {
return this.http.get('/api/settings', { headers: this.headers })
.toPromise()
.then(response => response.json() as SettingsValues);
}
我的登录工作正常,但我无法从django返回设置..
def get_queryset里面的print显示了AnonymousUser。
知道我做错了吗?
修改
private headers = new Headers({
'Content-Type': 'application/json',
'Accept': 'application/json',
});
答案 0 :(得分:0)
从服务器获取令牌后,您必须保存它并发送后续api调用的标头。像这样:
getSettings() : Promise <SettingsValues> {
this.headers.append('Authorization', 'JWT ' + token);
return this.http.get('/api/settings', { headers: this.headers })
.toPromise()
.then(response => response.json() as SettingsValues);
}
在Angular 1.x.x中,我可以将其添加到缓存授权标题以用于所有后续的api调用。
$http.defaults.headers.common.Authorization = 'JWT ' + token`;
在Angular 2中,我不知道如何为所有人缓存它,但请看一下this answer