2015-11-05 48 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); 

应该工作。没有测试代码或检查它编译;这是给出要点的例子。我可能会在稍后清理它。