我正在尝试开发一个应用程序,其中一个用户(称为代理)在注册网站后可以创建许多客户端。我正在使用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;}
}
答案 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