博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
阅读量:5261 次
发布时间:2019-06-14

本文共 1961 字,大约阅读时间需要 6 分钟。

首先我们要了解MVC提供了4种常用的拦截器:IActionFilter(Action拦截器接口)、IExceptionFilter(异常拦截器接口)、IResultFilter(Result拦截器接口)、IAuthorizationFilter(授权拦截器接口)

1.建一张保存操作日志的表

create table system_log(	Id char(32) primary key,	UserId char(32) not null comment '用户Id',	UserName varchar(50) not null comment '用户名称',	Tkey varchar(20) not null comment '关键字',	Description varchar(100) not null comment '操作描述',	OperateResult int default 0 not null comment '操作结果.0,失败;1,成功;',	DateTime datetime not null comment '操作时间') comment '系统日志';

 2.实现IActionFilter接口(Action拦截器接口),这里定义了2个参数Key和Description,分别表示操作的关键字和描述,方便分类查询和展示

///     /// 操作日志拦截器    ///     public class LoggerFilter : FilterAttribute, IActionFilter    {        ///         /// 日志关键字        ///         public string Key { get; set; }        ///         /// 日志描述        ///         public string Description { get; set; }        ///         /// Action执行后        ///         void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)        {            var result = ((System.Web.Mvc.JsonResult)filterContext.Result).Data.ToString();            var logService = new Service.SystemLogService();            var model = new Data.DomainModels.SystemLog()            {                UserId = "管理员Id",                UserName = "管理员名称",                Tkey = Key,                Description = Description,                OperateResult = result.Contains("True") ? 1 : 0,            };            logService.Save(model);        }        ///         /// Action执行前        ///         void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)        {        }    }

 3.使用日志拦截器,在需要记录操作日志的Action上加上拦截器属性就OK了,麻烦的是需要给每个Action定义Key和Description

///         /// 日志拦截器测试        ///         [LoggerFilter(Key = "key", Description = "做了哪些事情")]        public ActionResult DoSomething(string param)        {            //具体业务逻辑            return JRCommonHandleResult(true);        }

 

转载于:https://www.cnblogs.com/amywechat/p/4903661.html

你可能感兴趣的文章
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>