当前位置: 首页 > 知识库问答 >
问题:

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

慕飞章
2023-03-14

我的API应用程序中有此路由:

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

在postman中,我执行如下api调用:

URL用户?令牌=令牌

但这会带来:

如何在postman中使用令牌正确执行api调用?

共有3个答案

吕英豪
2023-03-14

您可以像这样创建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');
})
伊裕
2023-03-14

您需要将标头添加到超文本传输协议中

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

完成此操作后,您的请求将使用此标头发送,请查看https://docs.angularjs.org/api/ng/service/$超文本传输协议

能向晨
2023-03-14

您得到的错误指示需要为标头使用的正确格式:

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

你可以在邮递员里试试这个

 类似资料:
  • 我们有一个简单的应用程序,只有两个消费者和5个endpoint。对于一个endpoint,我需要某种身份验证方式。我喜欢这样做的条纹方式,但我不知道我如何可以在spring Boot中构建这个。 “对API的身份验证是通过HTTP基本身份验证执行的。请提供API密钥作为基本身份验证用户名值。不需要提供密码。”

  • 当我使用浏览器时,我使用此endpoint授权: https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id= &response_type=code&redirect_uri= &scope=email+offline_access+openid+profile&state=&prompt=sel

  • 我读到,当使用JWT时,不需要防止CSRF攻击,例如:“由于您不依赖cookie,您不需要防止跨站点请求”。 但是,有一点我不明白:如果我将令牌存储在localStorage中(正如我在同一网站的教程中被告知的那样),那么攻击者如何防止通过读取我的localStorage而不是Cookie来伪造恶意请求呢? 由于它是在服务器端生成的,我不知道如何在客户机请求中使用令牌而不将其存储在客户机的某个地方

  • 我正在使用JWTs为我的应用程序验证用户身份。当用户登录时,他们将获得一个访问令牌和一个刷新令牌。为了保证刷新令牌的安全,我不将其存储在客户端,而是将其与他们的帐户一起保存在后端,这样就不容易访问了。虽然我对刷新令牌的安全性感到困惑,但当我阅读关于如何使用刷新令牌的在线资源时,以下是我理解的逻辑: 身份验证 将访问令牌+刷新令牌存储在某个位置(在我的示例中,访问令牌位于前端,刷新令牌位于后端) 执

  • 出于学习目的,我正在使用OAuth2开发一个REST API Angular 4应用程序。 有些受保护的endpoint只能由经过身份验证的用户调用。让我们以更新用户配置文件的endpoint为例: /users/{user_id} 登录用户将能够通过转到更新配置文件屏幕来更新自己的配置文件,该屏幕在后台将调用 /users/{user_id}发送带有新信息和访问令牌的有效载荷。 我们如何防止恶意

  • 无法使用Azure对后端api进行身份验证。在jwt.ms中进行故障排除时,错误表示访问群体无效,但aud声明具有后端api客户端id。