2017-03-02 14 views
0

APIルートパラメータにログインしているユーザIDを渡したくないという状況があります。 たとえば、WebAPI [GETまたはPOST]エンドポイント 'api/getUserDetails/{id}'があります。このIDは、ユーザーデータを取得するために別のレイヤーに渡されます。WebAPI 2セキュアなルーティングパラメータ

public RestResult getUserDetails(int uID) 
{ 
    int uID = getFromHeaderCookie(); 
    var userDetails = someService.GetUserDetail(uID); 
    return userDetails; 
} 

ここで、idは経路パラメータとして渡され、Id値を変更することで誰でも他のユーザのデータを見ることができます。

これで、URLは 'api/getUserDetails'のようになり、ログイン時に保存されたCookieヘッダーからIdを読み込みたいと考えています。 ActionFiltersを使用して私はIDを取得することができます。

public RestResult getUserDetails() 
    { 
     int uID = getFromHeaderCookie(); 
     var userDetails = someService.GetUserDetail(uID); 
     return userDetails; 
    } 

これは機能していますが、私はUserIdを保護したい他の方法があります。 int uID = getFromHeaderCookie();を削除し、カスタムモデルバインダーを使用してコントローラにuserIDを挿入する方法はありますか?事前

答えて

0

にあなたがのOauthを試すことができ、かつClaimsIdentityからユーザー情報を取得

おかげで、ちょうどその時、要求URL(例えばベアラAccessTokenなど)の許可を追加する必要があります。

関連する問題