审计日志

介绍

  维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录、记录集合、记录的目的地和源,提供一系列活动的纪实证据,这些活动可能在任何时刻影响一个特定操作、过程或事件。”

  ABP提供了基础设施自动记录应用所有的交互。它可以记录方法调用的调用者和参数。

  基本上,保存的字段有:相关的tenant id,调用者user id,调用者service name(调用方法的类),调用者method name,执行parameters(序列化为JSON),执行时间,执行时长(毫秒级),客户端IP地址,客户端计算机名称异常(如果方法抛出异常)。

  有了这些信息,我们就可以知道谁执行了这个操作,也可以衡量应用的执行性能和检查抛出的异常。还可以得到你的应用的使用统计。

  审计系统使用IAbpSession获得当前的UserId和TenantId。

  应用服务、MVC控制器、Web APID和ASP.NET Core方法默认自动审计。

关于IAuditingStore

  审计系统使用IAuditingStore保存审计信息。你可以用自己的方式来实现这个接口,但在module-zero工程中已完全实现。如果你没实现它,可以使用SimpleLogAuditingStore,它会把审计信息写到日志中。

配置

  要配置审计,可以在模块的PreInitialize方法中使用Configuration.Auditing属性。审计默认是启用的。可以按如下的方式禁用:

public class MyModule : AbpModule
{
public override void PreInitialize()
{
Configuration.Auditing.IsEnabled = false;
} //...
}

  这里有审计配置属性的列表:

  • IsEnabled:用来完全启用或禁用审计系统。默认为:true。
  • IsEnabledForAnoymousUsers:如果设置为true,对那些没有登录到系统的用户也会保存审计日志。默认为:false。
  • Selectors:用来选择其他类保存审计日志。

  Selectors是一个术语列表用来选择其他类型保存审计日志。一个selector有一个唯一的名称和一个术语。默在这个列表中唯一的默认selector用来选择应用服务类。它的定义如下所示:

Configuration.Auditing.Selectors.Add(
new NamedTypeSelector(
"Abp.ApplicationServices",
type => typeof (IApplicationService).IsAssignableFrom(type)
)
);

  可以在模块的PreInitialize方法中添加selectors。如果你不喜欢应用服务保存审计日志,可以通过名称移除selector。这就是有一个唯一名称的原因(如果你想的话,可以使用简单的LINQ在selectors中查找selector并移除它)。

  注意:除了标准的审计配置,MVC和ASP.NET Core模块定义了配置来启用或禁用方法的审计日志。

通过特性启用/禁用

  你可以通过配置,选择需要审计的类,你也可以给一个类、方法使用Audited和DisableAuditing特性来达到目的。示例:

[Audited]
public class MyClass
{
public void MyMethod1(int a)
{
//...
} [DisableAuditing]
public void MyMethod2(string b)
{
//...
} public void MyMethod3(int a, int b)
{
//...
}
}

  MyClass的所有方法都会被审计,除了MyMethod2,因为它显示禁用了。Audited特性可以用于一个方法,这样就可以只给想要审计的方法进行审计了。

  DisableAuditing可以用于DTO的一个属性。因此,你可以在审计日志里隐藏敏感输入,如密码。

注意事项

  • 为了保存设计日志,方法必须为public。Private和Protected方法会被忽略。
  • 如果通过类引用调用,方法必须为virtual。如果使用它的接口(如注入IPersonService接口来使用PersonService类)注入,这就不要了。因为ABP使用动态代理和来接,所以这是需要的。对于MVC控制器方法,这不是真的。他们不能为virtual。

返回主目录

ABP官方文档翻译 4.6 审计日志的更多相关文章

  1. Abp + MongoDb 改造默认的审计日志存储位置

    一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...

  2. ABP官方文档翻译 6.2.1 ASP.NET Core集成

    ASP.NET Core 介绍 迁移到ASP.NET Core? 启动模板 配置 启动类 模块配置 控制器 应用服务作为控制器 过滤器 授权过滤器 审计Action过滤器 校验过滤器 工作单元Acti ...

  3. ABP官方文档翻译 6.1.1 MVC控制器

    ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...

  4. ABP官方文档翻译 5.1 Web API控制器

    ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...

  5. ABP官方文档翻译 2.2 ABP会话

    ABP会话 介绍 关于IAbpSession 注入会话 会话属性 覆盖当前会话值 警告! 用户标示 介绍 如果应用需要登录的话,同样也需要知道当前用户可以执行哪些操作.ABP在展现层提供了会话对象,同 ...

  6. ABP官方文档翻译 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

  7. ABP官方文档翻译 1.1 介绍

    介绍 介绍 快速示例 其他 启动模板 如何使用 介绍 我们通常会根据不同的需求来创建不同的应用程序.但是对于一些通用相似的结构总是一遍又一遍的实现,至少在某种程度上是这样的.常见的通用模块如授权.验证 ...

  8. ABP官方文档翻译 2.4 日志

    日志 服务端 获取记录器 基类日志记录器 配置 Abp.Castle.Log4Net包 客户端 服务端 ABP使用Castle Windsor`s 日志设备.它可以使用不同的日志类库:Log4Net, ...

  9. 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

随机推荐

  1. Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小

    Stack  overflow  顾名思义就是堆栈内存溢出. 一.无限递归 这个要自己仔细检查一下,程序中是否含有无限递归的情况,比如下面这就是无限递归: int function(int x, in ...

  2. HDU 1002 A + B Problem II(高精度加法(C++/Java))

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. 【Java学习笔记之十三】初探Java面向对象的过程及代码实现

    理解Java面向对象的重要知识点: 一. 类,对象 类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的.红色的.白色的... 这里,汽车设计图就是我们说的类(class ...

  4. codeforces 767A Snacktower(模拟)

    A. Snacktower time limit per test:2 seconds memory limit per test:256 megabytes input:standard input ...

  5. HDU--2015

    偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. [国嵌攻略][067][tftp协议分析]

    TFTP作用 用于网络下载,TFTP客户机在TFTP服务器中下载文件. TFTP交换过程 1.配置TFTP服务器 vim /etc/xinetd.d/tftp 2.交换过程 客户端发请求包到服务器 服 ...

  7. 免费V P N获取方式。

    给需要加速器链接国外网站的朋友, 打开网址:http://miaoaff.com/reg.php?id=204250: 用一个邮箱注册,就会得到一个免费的vpn软件账号(包含300M流量时间永久): ...

  8. 《图解http》知识点笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...

  9. visual studio 打开微软MVC3示例MvcMusicStore的详细修改方法

    1.官方下载地址:http://mvcmusicstore.codeplex.com/ 2.直接打开项目后,引用中会有三个dll文件报错,分别是System.Web.MVC;System.Web.He ...

  10. 微信小程序版2048

    最近流行微信"跳一跳"小游戏,我也心血来潮写了一个微信小程序版2048,本篇文章主要分享实现2048的算法以及注意的点,一起来学习吧!(源码地址见文章末尾)   算法 1.生成4* ...