代理客户关系

时间:2015-11-30 19:24:03

标签: c# asp.net asp.net-mvc asp.net-identity

我正在尝试开发一个应用程序,其中一个用户(称为代理)在注册网站后可以创建许多客户端。我正在使用MVC5和ASP.NET身份。我想知道的是,当Agent正在使用特定客户端时,我是否需要在会话中存储客户端ID,或者每次我在查询字符串中发送id或类似的内容来识别代理所在的当前客户端继续努力。如果有人能指导我正确的方向,我真的很感激。

示例课程就像这样

public class Agent
{
  public int UserId{get; set;}
  public ICollection<Client> Clients{get; set;}

  public virtual ApplicationUser User{get; set;}
}

public class Client
{
  public int ClientId{get; set;}
  public string Name{get; set}
  public Address Address{get; set;}
  public Something1 Something1{get; set;}
  public Something2 Something2{get; set;}
  so on....

  public int UserId{get; set;}
  public virtual Agent Agent{get; set;}
}

public class Address
{
  public int ClientId{get; set;}
  public string Line1{get; set}
  public string Line2{get; set}
  public string PostCode{get; set}


  public virtual Client Client{get; set;}
}

1 个答案:

答案 0 :(得分:1)

根据REST指南,客户端是一种资源,应由URL标识。例如,/clients/{clientId}了解详情,/clients/{clientId}/edit进行修改,/clients/{clientId}/delete删除等等。

您的操作会将clientId作为参数,然后使用它来查找相应的客户端。对于用户级权限,您只需将拥有客户端对象的用户集成到查询中。例如:

var userId = User.Identity.GetUserId();
var client = db.Clients.SingleOrDefault(m => m.UserId == userId && m.ClientId == clientId);
if (client == null)
{
    return new HttpNotFoundResult();
}

// whatever