C# Web API2如何使用带有注释的友好名称记录用户操作
我正在开发一个greenfield Web API,需要以友好的方式记录用户的操作。我可以很容易地收集登录用户、控制器、操作和参数,如 我想要的是给人们提供可读的友好信息,如:C# Web API2如何使用带有注释的友好名称记录用户操作,c#,logging,asp.net-web-api,C#,Logging,Asp.net Web Api,我正在开发一个greenfield Web API,需要以友好的方式记录用户的操作。我可以很容易地收集登录用户、控制器、操作和参数,如 我想要的是给人们提供可读的友好信息,如: “Paul登录”+时间戳 “Paul创建了一个新产品(一些产品元数据)”+时间戳 “Paul已删除产品xyz”+时间戳 我可以调整答案,然后使用控制器和操作上的查找表,通过一些令牌替换将其转换为我的可读字符串,但我可以看到,添加新操作时,这是一项维护开销。这也意味着开发人员可能会忘记进行调用,而我们会错过审核 是否有
- “Paul登录”+时间戳
- “Paul创建了一个新产品(一些产品元数据)”+时间戳
- “Paul已删除产品xyz”+时间戳
一般来说,我不喜欢AOP,因为它的意外因素可能会令人不安,但在这种情况下,减少维护开销是值得的。我认为尝试在UI层实现这一点是错误的。如果我点击网址
foo.com/product/delete/1
,这是否意味着我删除了该产品?我会说不
- 如果该用户没有权限怎么办李>
- 如果产品不存在会发生什么
- 如果产品未能删除,会发生什么情况
public void DeleteProduct(int productID, string username) {
_db.Products.Delete(productID); //pseudo code
_auditService.AddAuditRecord($"Product ID {productID} was deleted by {username}");
}
这样,只有在数据更改成功的情况下,才可以对其进行审核。我认为在UI层完成此操作是错误的。如果我点击网址
foo.com/product/delete/1
,这是否意味着我删除了该产品?我会说不
- 如果该用户没有权限怎么办李>
- 如果产品不存在会发生什么
- 如果产品未能删除,会发生什么情况
public void DeleteProduct(int productID, string username) {
_db.Products.Delete(productID); //pseudo code
_auditService.AddAuditRecord($"Product ID {productID} was deleted by {username}");
}
这样,只有在成功的时候才对数据进行审计。
请考虑一些好的观点。在我看来,登录API层的好处是,如果用户试图做一些他们没有授权的事情,我们需要审核。在我看来,登录API层的好处在于,如果用户试图做未经授权的事情,我们需要进行审计。