2016-10-19 8 views
1

Node.js-expressセットアップでREST APIを使用したWebサーバーがあります。私は公開されているさまざまなAPIを持っており、私はOAuthを使ってユーザーを認証しています。ユーザーを特定すると、自分の役割を取得し、APIのアクセス許可を与えることにします。問題は、私のすべてのAPIが繰り返しコードを持ち、すべてが役割をチェックして権限を判断する必要があることです。これを行うための良い方法はありますか?私はACLを見るべきですか?一般的に私はWebサービスの初心者であり、最良の解決策を認識していないかもしれません。ありがとう。Node.js Web-Serverでユーザーロールを特定し、APIアクセスを許可する正しい方法は何ですか?

例コード:

var userRole = getUserRole(user.role_id); 

function foo(error, user) { 
    if(error == null) { 
     var authorizedRoles = [ 
       ROLE.SUPERVISOR, 
       ROLE.MANAGER 
      ]; 
     if(authorizedRoles.indexOf(userRole) > -1) { 
      //Authorized 
     } else { 
      //Error 
     } 
    } //... 

次に、あなたを:

var accessCallback = function (err, user) { 
    if(err == null) { 
     var userRole = getUserRole (user.role_id); 
     if(userRole == ROLE.SUPERVISOR || userRole == ROLE.MANAGER || userRole == ROLE.EMPLOYEE){ 
      doStuff(); //business logic 
     } 
     else { 
      response.status(400).send (error.UserAccessDeniedError()); 
     } 
    } 
    else { 
     response.status(500).send(error.DatabaseError(err)); 
    } 
}; 

access.determineUser (req.body.tokenID, accessCallback); 

答えて

1

あなたは何ができるかは、ユーザーを許可するロールのリストを宣言し、ユーザの役割がそのリストにあるかどうかを確認でAPIポイントのそれぞれの承認された役割を構成し、検証をミドルウェア機能に置くことさえできます。

関連する問題