2016-06-26 13 views
0

私はREST APIにHapiJSを使用しています。また、スコープ機能を使用して、リソースへの単純なロールベースのアクセスを実装しています。例のルート設定オブジェクトのようになります。現在、認証されたユーザが(。/users/1をGETしようとすると、例えばscope: 'user-1')特定のエンドポイントにアクセスするためにscopeを必要としていないときにデフォルトでHapiJSスコープ:「不十分なスコープ」ではなくカスタムエラーメッセージ

{ 
    method: 'GET', 
    path: '/users/{userID}', 
    config: { 
     auth: { 
      access: { 
       scope: ['user-{params.userID}'] 
      } 
     }, 
     handler: getUserHandler 
    } 
} 

、返されたエラー応答があります:

私はを返すようにしたい - 私が欲しいもの

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

は、カスタムステータスコードとエラーメッセージが表示されて、この403エラーを交換にあります代わりに。そして、私はこれをの特定のエンドポイントに対してのみ行いたいです。これは可能ですか?

答えて

1

あなたはあなたが要求内routeresponseオブジェクトを取得することができますserver.ext('onPostHandler', (request, reply) => {...

を通してそれを行うことができます。

responseオブジェクトにはisBoomが含まれています。これが真の場合は、403である場合に検証できるresponse.output.statusCodeが必要です。

オブジェクトには、目的のエンドポイントであるかどうかを検証することができるpathが含まれています。

このような何か:

server.ext('onPostHandler', (request, reply) => { 
 

 
    const response = request.response; 
 

 
    if (response.isBoom && 
 
    response.output.statusCode === 403 && 
 
    request.route.path === 'your_endpoint') { 
 
    
 
    // your code here 
 
    } 
 

 
    return reply.continue(); 
 
});

関連する問題