ABP文档 - 审计日志
本节内容:
简介
维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录、记录组、和/或记录源和目标,作为任何时候一个特殊操作带来影响的一序列活动的书面文件”。
ABP提供一个基础框架来自动记录所有与应用的交互,它能记录有意的方法调用和调用者信息与参数。
基本上,保存的字段有:相关的租户id,调用者id,被调用的服务名(被调用方法的类名),被调用的方法名,执行参数(序列化成Json),执行时间,执行时长(毫秒),客户端IP,客户端电脑名和异常(如果方法抛出一个异常)。
有了这些信息,我们不仅能知道谁做了操作,也能测量应用的性能和观察异常,甚至更多,如你可以统计你应用的使用频次。
审计系统使用IAbpSeesion来获取当前UserId和TenantId。
应用服务、Mvc控制器、Web Api和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。
- IsEnabledForAnonymousUsers:如果设为true,在用户未登录系统的情况下,也会保存审核日志。默认为:false。
- Selectors:选择其它类来保存审核日志
Selectors是一个谓词列表,用其它类型来保存审核日志,一个选择器有一个唯一的名称和一个谓词,在这个列表里唯一默认的选择器是用来选择应用服务类的,它的定义如下所示:
Configuration.Auditing.Selectors.Add(
new NamedTypeSelector(
"Abp.ApplicationServices",
type => typeof (IApplicationService).IsAssignableFrom(type)
)
);
你可在你的模块的PreInitialize方法里添加自己的选择器,同样,如果你不想为应用服务保存审计日志,可通过名称移除选择器,这就是为什么需要一个唯一的名称的原因(如果你想,可以使用简单的Linq在Selector里找到一个选择器,并移除它)。
注意:除了标准的审计配置,Mvc和Asp.net Core模块为Action定义了启用/禁用审计日志的配置。
通过特性启用/禁用
虽然你可以通过配置选择审计类,但你可以为一个单独的类、方法使用Audited和DisableAuditing特性,例如:
[Audited]
public class MyClass
{
public void MyMethod1(int a)
{
//...
} [DisableAuditing]
public void MyMethod2(string b)
{
//...
} public void MyMethod3(int a, int b)
{
//...
}
}
除了MyMethod2,MyClass类的其它方法都被审计了,因为MyMethod2显式禁用了审计,Audited特性可用在一个方法上,只对关心的方法进行审计。
DisableAuditing可用在一个DTO的一个单独的属性上,因此,你可以在审计日志里隐藏敏感数据,例如密码。
注意
- 为记录审计日志,方法必须是public,private和protected方法会被忽略。
- 如果通过类引用调用一个方法,这个方法必须为virtual,如果类是通过它的接口被注入,那这就不是必要的(如通过注入IPersonService接口来使用PersonService类),ABP使用动态代理和拦截器,所以这又是必要的。这对于Mvc控制器的Action不适用,因为它们可能不为virtual。
ABP文档 - 审计日志的更多相关文章
- ABP文档笔记系列
ABP文档笔记 - 模块系统 及 配置中心 ABP文档笔记 - 事件BUS ABP文档笔记 - 数据过滤 ABP文档笔记 - 规约 ABP文档笔记 - 配置.设置.版本.功能.权限 ABP文档笔记 - ...
- atitit.设计文档---操作日志的实现
atitit.设计文档---操作日志的实现 日志查询 1 ----mybatis 配置... 1 添加日志 1 日志查询 <a class="l-link" href=&q ...
- ABP文档 - Mvc 控制器
文档目录 本节内容: 简介 AbpController基类 本地化 其它 过滤 异常处理和结果包装 审计日志 验证 授权 工作单元 反伪造 模型绑定器 简介 ABP通过nuget包Abp.Web.Mv ...
- ABP文档 - Web Api 控制器
文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...
- ABP文档 :Overall - Introduction
介绍 我们基于不同的需求创建不同的应用,但却在一次又一次地实现相同或相似的结构.至少在某种程度上,授权.验证.异常处理.日志.本地化.数据库连接管理.配置管理.审计日志属于通用的结构. 另外我们总是在 ...
- ABP理论学习之审计日志
返回总目录 本篇目录 介绍 配置 通过特性开启/关闭 注意 我项目中的例子 介绍 维基百科说: "审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,记录集或者记录源,它们提供了活动序 ...
- ABP文档 - Javascript Api - AJAX
本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...
- ABP文档 - SignalR 集成
文档目录 本节内容: 简介 安装 服务端 客户端 连接确立 内置功能 通知 在线客户端 帕斯卡 vs 骆峰式 你的SignalR代码 简介 使用Abp.Web.SignalR nuget包,使基于应用 ...
- ABP文档 - 通知系统
文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...
随机推荐
- Jade模板引擎让你飞
写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...
- CSS float 浮动属性
本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式:介绍文档流.浮动层以及float属性. 2. float:left :介绍float为 left 时的布局方式. 3. ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
- Carousel 旋转画廊特效的疑难杂症
疑难杂症 该画廊特效的特点就是前后元素有层级关系. 我想很多人应该看过或者用过这个插件carousel.js,网上也有相关的教程.不知道这个插件的原型是哪个,有知道的朋友可以告诉我. 该插件相对完美, ...
- IT运维监控解决方案介绍
现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...
- Oracle第一步
Oracle 启动数据库 Startup [NOMOUNT|MOUNT|OPEN|FORCE] [restrict] [pfile=filename] 启动实例,加载数据库,启动数据库 oRACLE关 ...
- 自定义控件之 圆形 / 圆角 ImageView
一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...
- [Django]用户权限学习系列之权限管理界面实现
本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...
- 执行git push出现"Everything up-to-date"
在github上git clone一个项目,在里面创建一个目录,然后git push的时候,出现报错"Everything up-to-date" 原因:1)没有git add . ...
- Hbase安装和错误
集群规划情况: djt1 active Hmaster djt2 standby Hmaster djt3 HRegionServer 搭建步骤: 第一步:配置conf/regionservers d ...