javascript - 将 auth0 token 传递给 $http.get ( Angular )

标签 javascript angularjs auth0

在将 auth0 token 附加到对期望看到该 token 的 api 的 http.get 请求中时遇到一些问题。该 token 在用户登录时创建,并保存在浏览器本地存储中。那部分工作正常。因此,它将 token 附加到我遇到问题的 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 函数,我将请求发送到也需要 token 的 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(未经授权),这对我来说意味着 token 由于某种原因未附加到 http.het 请求。知道为什么会发生这种情况吗?

如果有帮助的话,我还包含了浏览器控制台的 header ...

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:*

最佳答案

您没有在 jwtInterceptorProvider.tokenGetter 中返回 token 。来自 docs

jwtInterceptorProvider.tokenGetter = function(store, $http, jwtHelper) {
  var idToken = store.get('token');
  var refreshToken = store.get('refreshToken');
  if (jwtHelper.isTokenExpired(idToken)) {
    return auth.refreshIdToken(refreshToken);
  } else {
    return idToken;
  }
}

关于javascript - 将 auth0 token 传递给 $http.get ( Angular ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723176/

相关文章:

javascript - 如何在 AngularJS 中获取多个复选框的值?

javascript - 单击按钮或输入搜索字段时使用新数据重绘 D3 饼图

asp.net-mvc - Chrome 没有在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie

javascript - 如何将此 javascript 函数更改为 Jquery

javascript - 使用基于 iframe url 的 javascript 更改 X-UA-Compatible 元标记

javascript - Angular : custom filter infinite digest

oauth - 使用 auth0 Firebase 和 Ionic 进行 Linkedin 身份验证

javascript - 在下拉菜单中从数据库更改事件加载数据并填充文本框

javascript - 单击后更改下拉图标框的jquery

jwt - 为什么 auth0 建议不要将 token 存储在 localStorage 中?