我有一个类似于下面的数据库结构:
User
----
Id
Name
UserCustomerLink
----------------
UserId
CustomerId
Customer
--------
Id
Name
Address
-------
Id
CustomerId
Address1
Invoice
-------
Id
AddressId
Number这是一个asp.net mvc站点,用户可以转到像http://localhost/invoice/details/1这样的地址,它将返回id为1的发票。
用户需要登录并分配给发票(通过地址)所属的客户(通过UserCustomerLink表)。
我的问题是,我应该在哪里检查用户是否可以查看发票?
我应该检查发票是否存在,用户可以查看它,然后从数据库中返回它,或者我应该从数据库中检索项目,然后进行检查?
我关心的是为查找此信息而执行的数据库查询的数量,我正在寻找一种有效的方法。这是结构和一些子属性的简单化视图,深度超过3。
在网站笔记中,我首先使用的是实体框架代码,所以如果有一种方法可以创建一个在Invoice对象中包含客户Id的映射,那么就有可能绕过这个问题。
发布于 2011-11-10 03:15:28
查看Authorize属性。您可以将您的用户分配到角色中,然后让框架为您检查。
[Authorize(Roles="AllowedUser")]
public ViewResult GetInvoies()
{
return View();
}https://stackoverflow.com/questions/8068856
复制相似问题