我有一个内部CRM系统,客户可以看到他们的发票。
该函数中的第5行检查发票是否属于登录客户(if(invoice.CustomerId!= loggerInCustomerId))。
我不确定这是否应该进行此项检查。
public ActionResult ViewInvoice(Guid invnum)
{
int loggerInCustomerId = GetTheLoggedInCustomerId();
Invoice invoice = _invoiceLogic.GetInvoice(invnum);
if (invoice.CustomerId != loggerInCustomerId)
{
//Invalid Action
return RedirectToAction("Index", "MyInvoices");
}
//do other stuff as normal
}
此检查应该转移到业务逻辑中吗? GetInvoice将接收发票号参数和登录用户的参数。然后GetInvoice会执行此检查并抛出异常,我的动作方法中会有一个Try Catch。
或者有更好的方法吗?
答案 0 :(得分:1)
是否应将此检查移至业务逻辑中?
是的,您可以,在这种情况下,您将已登录的用户身份传递给BL方法调用。但我认为在你的控制器本身保持这个检查没有任何错误。
无论如何,通过致电"images/unmute.png"
然后检查要采取的行动从你的BL获取发票,因此对我而言,在GetInvoice()
中保留此检查非常有意义而是把它放在业务层。
但是,是的,这是一个有争议的问题。