Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将auth0令牌传递给$http.get(角度)_Javascript_Angularjs_Auth0 - Fatal编程技术网

Javascript 将auth0令牌传递给$http.get(角度)

Javascript 将auth0令牌传递给$http.get(角度),javascript,angularjs,auth0,Javascript,Angularjs,Auth0,'我在获取auth0令牌以附加到http.get请求到期望看到该令牌的api时遇到一些问题。该令牌在用户登录时创建,并保存在浏览器本地存储中。那部分很好用。因此,它将令牌附加到我遇到问题的http.get 到目前为止,我有以下代码。在我的app.js中,我有以下内容 var QuoteApp = angular.module('QuoteApp', ['ui.router', 'auth0', 'angular-jwt', 'angular-storage', 'ngCookies']); pr

'我在获取auth0令牌以附加到http.get请求到期望看到该令牌的api时遇到一些问题。该令牌在用户登录时创建,并保存在浏览器本地存储中。那部分很好用。因此,它将令牌附加到我遇到问题的http.get

到目前为止,我有以下代码。在我的app.js中,我有以下内容

var QuoteApp = angular.module('QuoteApp', ['ui.router', 'auth0', 'angular-jwt', 'angular-storage', 'ngCookies']);
priceQuoteApp.config(function ($stateProvider, $urlRouterProvider, $httpProvider, authProvider, $locationProvider, jwtInterceptorProvider) {

jwtInterceptorProvider.tokenGetter = function(store, jwtHelper, auth) {
    var idToken = store.get('token');
    var refreshToken = store.get('refreshToken');
    // If no token return null
    if (!idToken || !refreshToken) {
        return null;
    }        
}
$httpProvider.interceptors.push('jwtInterceptor');

});
然后我有一个$http.get函数,我向api发送一个请求,该请求也需要一个令牌

在我的api.service.js文件中,我有一个

this.getStuff = function (attributes) {
    return $http.get('http://www.theurl.com/api/getstuff?json=' + JSON.stringify(attributes)).
        success(function(){
        });
};
我从我的getStuff.js文件中调用getStuff函数,如下所示

  $scope.getTheStuff = function (){
         Services.getStuff($scope.Attributes)
         .then(function (res) {
         })
    };
因此,我从服务器401(未经授权)收到一个身份验证错误,这对我来说意味着令牌由于某种原因没有附加到http.het请求。你知道为什么会这样吗

我还包括了来自浏览器控制台的标题,如果这有帮助的话

Remote Address:10.34.51.34:80
Request URL:http://www.theurl.com/api/getstuff?json={stuff in here}]}
Request Method:GET
Status Code:401 Unauthorized
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Host:http://www.theurl.com
Origin:http://localhost:63342
Referer:http://localhost:63342/price-tool-ui-1/app/index.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Query String Parametersview sourceview URL encoded
json:{stuff in here}]}
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin:*

我不确定我是否正确理解了你的问题。但以下是我在验证后将http请求中的令牌设置为API的步骤:

$http.defaults.headers.common['token'] = token;

标头的名称取决于API预期的内容(可能是X-Auth、令牌、X-Token…。

我不确定是否正确理解了您的问题。但以下是我在验证后将http请求中的令牌设置为API的步骤:

$http.defaults.headers.common['token'] = token;

标头的名称取决于API所期望的内容(可能是X-Auth、令牌、X-Token…。

您没有在
jwtInterceptorProvider.tokenGetter
中返回令牌。从


您没有在
jwtInterceptorProvider.tokenGetter
中返回令牌。从


您没有返回从localStorage获得的令牌

@eer响应非常好,但他仍然需要保存新刷新的令牌,以便下次不必再次调用该端点

代码如下所示:

var refreshingToken = null;
jwtInterceptorProvider.tokenGetter = function(store, $http, jwtHelper) {
  var token = store.get('token');
  var refreshToken = store.get('refreshToken');
  if (token) {
    if (!jwtHelper.isTokenExpired(token)) {
      return store.get('token');
    } else {
      if (refreshingToken === null) {
        refreshingToken =  auth.refreshIdToken(refreshToken).then(function(idToken) {
          store.set('token', idToken);
          return idToken;
        }).finally(function() {
            refreshingToken = null;
        });
      }
      return refreshingToken;
    }
  }
}
希望有帮助

更多关于


谢谢

您没有返回从localStorage获得的令牌

@eer响应非常好,但他仍然需要保存新刷新的令牌,以便下次不必再次调用该端点

代码如下所示:

var refreshingToken = null;
jwtInterceptorProvider.tokenGetter = function(store, $http, jwtHelper) {
  var token = store.get('token');
  var refreshToken = store.get('refreshToken');
  if (token) {
    if (!jwtHelper.isTokenExpired(token)) {
      return store.get('token');
    } else {
      if (refreshingToken === null) {
        refreshingToken =  auth.refreshIdToken(refreshToken).then(function(idToken) {
          store.set('token', idToken);
          return idToken;
        }).finally(function() {
            refreshingToken = null;
        });
      }
      return refreshingToken;
    }
  }
}
希望有帮助

更多关于


谢谢

你确定这就是你问题的描述吗?谢谢你的回答。我不知道这是个问题。看起来确实有点长,但我想我应该尽可能多地提供信息。没问题。尝试编辑您的帖子-如果它符合我链接的帮助中的规则,则有更多的机会获得您的答案。好的,谢谢-它已被编辑您确定这是您问题的描述吗?谢谢您的回答。我不知道这是个问题。看起来确实有点长,但我想我应该尽可能多地提供信息。没问题。试着编辑你的帖子-如果它符合我链接的帮助中的规则,那么就有更多的机会得到你的答案。好的,谢谢-已经编辑过了