jwt 令牌的刷新如何在 django REST 中工作 angular

How does refreshing of jwt token work in django REST angular

我正在使用这个

http://getblimp.github.io/django-rest-framework-jwt/#refresh-token

我很困惑如何让它发挥作用。我已经按照所说完成了所有设置。现在如何让它工作。

目前我有代码在用户提交登录时获取第一个令牌,并将该令牌保存在 cookie 存储中。然后我的请求对所有请求使用该令牌。我已经看到该令牌有时会过期,我不希望这样。所以这就是我使用这个的原因

$http
    .post('/api-token-auth/', logData)
    .then(function (response) {
        // assumes if ok, response is an object with some data, if not, a string with error
        // customize according to your api
        if (!response.data.token) {
            _vm.authMsg = 'Incorrect credentials.';
            deferred.reject('Incorrect credentials.');
        } else {
            $cookieStore.put('djangotoken', response.data.token);
            $http.defaults.headers.common.Authorization = 'JWT ' + response.data.token;
            $http.get('/api/account/restricted/').then(function (response) {
                authService.loginConfirmed();
                $cookieStore.put('currentUser', response.data);
                $rootScope.$broadcast('user:login');
            });
        }
        deferred.resolve(response.data);
        }, function (x) {
            _vm.authMsg = 'Server Request Error';
            deferred.reject('Server Request Error');
        });

这就是我在每个请求中使用该令牌的方式

   $http.defaults.headers.common['Authorization'] = 'JWT ' + $cookieStore.get('djangotoken');

现在需要做什么才能使刷新令牌起作用。我的意思是用户是否必须手动刷新令牌或系统会自动执行此操作。我什么时候需要访问这个 url

url(r'^api-token-refresh/', 'rest_framework_jwt.views.refresh_jwt_token'),

您引用的文档非常明确。将现有令牌传递给刷新端点,如下所示 [snipped description]:

$ curl -X POST -H "Content-Type: application/json" -d '{"token":"<EXISTING_TOKEN>"}' http://localhost:8000/api-token-refresh/

您必须调用刷新 URL 才能使其正常工作。这意味着您的客户端需要监控何时需要刷新令牌并因此调用 URL,或者您可以在服务器中放置一些逻辑来为您期望的请求子集调用此 URL用户需要很长时间来遍历它们(例如填写一个长的多页表格)。

如果您决定选择后者,您可能会发现 this 有用。