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 有用。
我正在使用这个
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 有用。