Anonymus用户Django + Angular 2

时间:2017-02-17 16:45:33

标签: django angular jwt

我正在使用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',
  });

1 个答案:

答案 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

相关问题