我有一个内部CRM系统,客户能够查看他们的发票。
函数中的第 5 行检查发票是否属于登录的客户(如果(发票。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。
或者有更好的方法可以做到这一点吗?
是否应将此检查移动到业务逻辑中?
是的,您可以,在这种情况下,您将已将登录的用户身份传递给 BL 方法调用。但是我认为在您的控制器本身中保留此检查没有任何问题。
无论如何,您都可以通过致电 GetInvoice()
BL 从您的 BL 获取发票,然后进行检查以查看要采取的操作,因此对我来说,将此支票保留在您的controller Action
而不是将其放在业务层中非常有意义。
但是,是的,这是一个争论性的问题。