简单的拦截器,将获取所有请求和JWT令牌添加到其授权头

简单的拦截器,将获取所有请求和JWT令牌添加到其授权头

问题描述:

在我的努力来建立,需要登录到受保护的页面和重新路由到登录页面,如果没有授权的,在使用Django的REST框架和DRF-智威汤逊,我我试图去通过下面的教程:简单的拦截器,将获取所有请求和JWT令牌添加到其授权头

https://www.octobot.io/blog/2016-11-11-json-web-token-jwt-authentication-in-a-djangoangularjs-web-app/

我不知道这是什么样子的前端部分的第3步。

// Add a simple interceptor that will fetch all requests and add the jwt token to its authorization header. 

有人可以提供一个例子吗?

而且,我对于我有在一般设置此问题的原帖。

Trying to get login required to work when trying to access protected pages

谢谢!

拦截器是服务工厂,它们通过将它们添加到$ httpProvider.interceptors数组而注册到 $ httpProvider。 工厂被调用并且具有依赖注射(如果指定) 并返回拦截。

背后截击的基本思路是,将每个$ HTTP请求之前被调用,您可以使用服务来检查,如果用户登录并添加标记或其他任何需要被添加到在header.You还可以添加一些逻辑为每个$ HTTP请求响应,像处理基于状态码的响应。

这里是你如何使用它的角添加访问令牌为每个HTTP请求。

angular.module('myapp') 
.run(['$rootScope', '$injector', function($rootScope,$injector) { 
    $injector.get("$http").defaults.transformRequest = function(data, headersGetter) { 
     if (sessionService.isLogged()) { 
     headersGetter()['Authorization'] = "Bearer " + sessionService.getAccessToken(); 
     } 
     if (data) { 
     return angular.toJson(data); 
     } 
    }; 
}); 

这里是你如何使用响应截击

angular.module('myapp') 
.factory('authHttpResponseInterceptor', function($q, $location, sessionService, $http) { 
    return { 
    response: function(response) { 
     //some logic here 
     return response || $q.when(response); 
    }, 
    responseError: function(rejection) { 
     if (rejection.status === 401) { 
     //some logic here 
     } 
     return $q.reject(rejection); 
    } 
    } 
});