【问题标题】:Anonymus user Django + Angular 2匿名用户 Django + Angular 2
【发布时间】:2017-07-07 06:58:27
【问题描述】:

我正在使用 django + angular 2

我正在使用带有这样的 url 的 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 中的打印显示 AnonymousUser。

知道我做错了什么吗?

编辑

  private headers = new Headers({
    'Content-Type': 'application/json',
    'Accept': 'application/json',
  });

【问题讨论】:

    标签: django angular jwt


    【解决方案1】:

    从服务器获取token后,需要保存并发送到后续api调用的header中。像这样的:

    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 中,我可以将其添加到缓存 Authorization Header 以供所有后续 api 调用使用。

    $http.defaults.headers.common.Authorization = 'JWT ' + token`;
    

    在 Angular 2 中,我不确定如何为所有人缓存它,但请查看 this answer

    【讨论】:

    • 这么简单?该死的..非常感谢你!确实我用 let currentUser = JSON.parse(localStorage.getItem('currentUser'));然后 this.headers.append('Authorization', 'JWT' + currentUser.token);
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多