ASP.NET WebAPI按用户属性过滤数据

时间:2014-03-12 19:06:41

标签: c# asp.net-web-api

ASP.NET WebAPI 2.1

以下是我的情景:

  • 新用户正在注册(其中一个标识属性为CustomerID - 对用户隐藏,默认为NULL)
  • 管理员正在使用来自Customers表的正确主键更新CustomerID,并将“客户”角色分配给注册用户。从现在开始,用户应该能够看到他的所有发票,订单等。

如何使用CustomerID过滤所有发票,订单等的Web API调用?

我经常搜索,找不到任何样品。如果有人能指出正确的方向和/或示例代码,我真的很感激。

以下是我的控制器:

public class invoicesController : ApiController
{
    private myEntities db new db1Entities();

    // GET api/invoices
    public IQueryable<invoices> Getinvoices()
    {
           // here (I guess) I need to add a filter by CustomerID
               // first get CustomerID from logged In User

            return db.invoices;
    }

     // GET api/invoices/5
    [ResponseType(typeof(invoices))]
    public IHttpActionResult Getinvoices(int id)
     {
        invoices invoices_by_id = db.invoices.Find(id);
        if (invoices_by_id == null)
        {
                        return NotFound();
        }       
       return Ok(invoices_by_id);
    }   
}

行。我得到了它的工作,但我认为必须有更好的方式来访问用户属性......任何人?

// Instantiate the UserManager in ASP.Identity system to look up the user in the system
// ApplicationUser class is defined in IdentityModels.cs, same as ApplicationDbContext
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
//Get the User object
var currentUser = manager.FindById(User.Identity.GetUserId());
//Get the profile information about the user
int? userCustomerID = currentUser.customerID;

在控制器中我刚改变了最后一行:

return View(db.invoices.Where(i => i.CustomerID == userCustomerID).ToList());

0 个答案:

没有答案