2017-02-17 5 views
0

я использую Джанго + угловой 2Анонимус пользователь Джанго + Угловая 2

я использую rest_framework_jwt с URL, как этот

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); 

Мой Логин работает нормально, но я не могу вернуть настройки из Джанго ..

Печать внутри четкости get_queryset показывает AnonymousUser.

Любая идея, что я делаю неправильно?

EDIT

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

ответ

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); 
} 

В угловых 1.x.x, я могу добавить это в кэш Authorization заголовок для всех последующих вызовов API.

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

В Угловое 2, я не уверен, как кэшировать его для всех, но посмотрите на this answer

+0

так просто? черт возьми .. большое спасибо! действительно я использую let currentUser = JSON.parse (localStorage.getItem ('currentUser')); и после this.headers.append ('Авторизация', 'JWT' + currentUser.token); –