如何使用令牌正确调用受保护的API路由

时间:2015-10-22 15:25:30

标签: angularjs node.js postman express-jwt

我的API应用中有这条路线:

router.get('/users', auth, function(req, res) {
  User.find({}, function(err, users) {
    res.json(users);
  });
});

在邮递员中,我这样做api电话:

  

网址+用户?token = 令牌

但是这会回来:

  

格式为授权:承载[令牌]

如何在邮递员中使用令牌正确执行api调用?

3 个答案:

答案 0 :(得分:0)

您需要将标头添加到http

module.run(function($http) {
  $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
});

执行此操作后,您的请求将与此标头一起发送 看看https://docs.angularjs.org/api/ng/service/ $ http

答案 1 :(得分:0)

您可以像这样创建一个http拦截服务

app.factory('authInterceptor', function($rootScope, $q, $cookieStore, $location) {
    return {
        // Add authorization token to headers
        request: function(config) {
            config.headers = config.headers || {};
            if ($cookieStore.get('token')) {
                config.headers.Authorization = 'Bearer ' + $cookieStore.get('token');
            }
            return config;
        },

        // Intercept 401s and redirect you to login
        responseError: function(response) {

            if (response.status === 401) {
                $location.path('/login');
                // remove any stale tokens
                $cookieStore.remove('token');
                return $q.reject(response);
            } else {
                return $q.reject(response);
            }
        }
    };
})

然后将服务添加到拦截器中,如此

app.config(function($httpProvider) {
      $httpProvider.interceptors.push('authInterceptor');
})

答案 2 :(得分:0)

您收到的错误表明您需要使用正确的标题格式:

  

格式为授权:承载[令牌]

你可以在Postman中试试这个

Postman config