2015-11-05 50 views
0

我將開發一個使用Web API的休息服務。爲此,我們有一個要求,即我們有許多家長能夠以父母身份登錄到應用程序。爲成功登錄後訪問應用程序的每個用戶提供訪問令牌。獲取教師目錄的Web API

爲每位家長提供一項服務,以獲得正在教他們孩子的教師名單。父母可能有多個孩子。當父母登錄時,客戶端可用的childid列表。

  1. 因此,我們需要將childid與用戶的accesstoken傳遞給api。這是最好的方法。它是一個GET或POST包括孩子ID爲JSON身體?
  2. 什麼是創建像這樣的服務的最佳方法。 GET還是POST?包括HEADER中的accesstoken或其他任何方式。像裏面的JSON?

回答

-1

實現此目的的一種方法可能是讓每個用戶(父母)Claims代表他們的每個孩子的親子關係。這些將被添加到用戶的主體in the manner described in this article。某些數據存儲(例如數據庫表)會記錄哪些用戶(父母)是哪些子女的父母。最後,在API操作方法中,將請求信息的孩子的ID與用戶主體上的子級聲明列表進行比較,如果該ID不存在,則返回4xx狀態碼(可能爲403 Forbidden)。

喜歡的東西:

// Cast the Thread.CurrentPrincipal 
IClaimsPrincipal icp = Thread.CurrentPrincipal as IClaimsPrincipal; 

// Access IClaimsIdentity which contains claims 
IClaimsIdentity claimsIdentity = (IClaimsIdentity)icp.Identity; 

// Access claims 
if(claimsIdentity.Claims 
    .Where(c => c.ClaimType == "name-of-your-custom-claim") 
    .Select(c => c.Resource.ToString()) 
    .Contains(childId)) { return new HttpResponseMessage(HttpStatusCode.Forbidden); 

應該工作。沒有測試代碼或檢查它編譯;這是給出要點的例子。我可能會在稍後清理它。