如何在我的应用程序中将范围设置为 http 请求?

How can I set the scope to a http request in my app?

我想知道如何在我的 Ionic 应用程序中将范围设置为 http 请求。我们正在使用 Node.JS 构建的后端 Hapi 框架。我在和一个团队一起工作,所以我在服务器端没有足够的知识,因为我正在开发 Ionic 应用程序。

此外,我正在为请求 header 设置一个 Bearer Token,它工作正常。下面是我的代码。

Ionic 应用程序 Http 请求:

let params = { eventId: this.event_id, bearerToken: '' };  

let headers = new HttpHeaders();

headers.set('Content-Type', 'application/json');
headers.set('Authorization', `Bearer ${params.bearerToken}`);
headers.set('Scope', 'client');
console.log("Authorization bearer token: " + params.bearerToken);
//headers.append('scope', ['client']);
let options = { headers: headers, scope: 'client' };
return this.http
  .get(this.baseUrl + `getEventShops?eventId=${params.eventId}`, options)
  .pipe(map((response: any) => response)
    , catchError(this.handleError));

Node.JS 路线片段:

exports.getEventShops = {
method: 'get',
path: '/event/getEventShops',
async handler(request) {
    const user = request.auth.credentials.userSession;
    let data = await shopController.getEventShops(request.query, user);
    return data;
},
config: {
    auth: {
        strategy: 'JwtAuth',
        scope: ['client']
    },
  ......

这是我收到的错误代码:

{
   "statusCode": 403,
   "error": "Forbidden",
   "message": "Insufficient scope"
}

我知道这个错误是因为我设置范围的方式不对。

这是必须在 Bearer 令牌中设置的东西,在服务器端,而不是在移动端。