MVC4.0 利用IActionFilter实现简单的后台操作日志功能
首先我们要了解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,分别表示操作的关键字和描述,方便分类查询和展示
/// <summary>
/// 操作日志拦截器
/// </summary>
public class LoggerFilter : FilterAttribute, IActionFilter
{
/// <summary>
/// 日志关键字
/// </summary>
public string Key { get; set; } /// <summary>
/// 日志描述
/// </summary>
public string Description { get; set; } /// <summary>
/// Action执行后
/// </summary>
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);
} /// <summary>
/// Action执行前
/// </summary>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ }
}
3.使用日志拦截器,在需要记录操作日志的Action上加上拦截器属性就OK了,麻烦的是需要给每个Action定义Key和Description
/// <summary>
/// 日志拦截器测试
/// </summary>
[LoggerFilter(Key = "key", Description = "做了哪些事情")]
public ActionResult DoSomething(string param)
{
//具体业务逻辑 return JRCommonHandleResult(true);
}
MVC4.0 利用IActionFilter实现简单的后台操作日志功能的更多相关文章
- MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能
1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...
- MVC4.0 利用IActionFilter实现单一Action返回多种结果
延续MVC4.0 实现单一Action返回多种结果,我们实现了在一个Action中根据前台请求方式的不同和请求内容的不同返回了多个结果,但是这种返回多个结果的业务逻辑并不通用.如果现在年纪Action ...
- 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...
- 大数据作业之利用MapRedeuce实现简单的数据操作
Map/Reduce编程作业 现有student.txt和student_score.txt.将两个文件上传到hdfs上.使用Map/Reduce框架完成下面的题目 student.txt 20160 ...
- 利用Spring AOP和自定义注解实现日志功能
Spring AOP的主要功能相信大家都知道,日志记录.权限校验等等. 用法就是定义一个切入点(Pointcut),定义一个通知(Advice),然后设置通知在该切入点上执行的方式(前置.后置.环绕等 ...
- 后台操作日志,插入数据获取的该数据主键ID为null
代码如下: @Override public void saveTopicResource(TopicResourceModel model, Integer userId) { TopicResou ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(二)
上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一))我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的.因为这一些列主要是要给ASP ...
- 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...
随机推荐
- devexpress中应用于girdviw中HtmlDataCellPrepared事件与CellEditorInitialize事件的区别
HtmlDataCellPrepared 事件为页面展示的时候对页面做的初始化(将id变为name) CellEditorInitialize 事件为页面在编辑时(新增.修改)时做的初始化,如将值填 ...
- Vim与GCC和gdb完美组合
一.vim vim修改一下配置文件后,如果你稍微会点vim的命令使用,那可比一般的编辑器好用啊,如果一点不会vim的命令使用,就跟一般编辑器一样使用. 打开etc/vim/vimrc文件 这里的引号是 ...
- 一个不简单的Procedure body例子
create or replace package body CountBankData_20150617 is type cursorCommon is ref cursor; --游标类型 str ...
- C++三种内存分配方式
从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.静态分配的区域的生命期是整个软件运行期,就是说从软件运行开始到软件终止退出.只 ...
- 【Python】django模型models的外键关联使用
Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...
- 在centos上安装mysql5.7的三种方法
带OS信息的是已编译的二进制文件,不带OS信息的是源码包 mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz 二进制包 mysql-5.5.51.tar.gz 源码包 ...
- myeclipse上SVN代码合并详细步骤图解
1. 在装有svn插件的myeclipse中,在主干上选择需要合并的文件或文件夹 右击 -> 合并(merge) 2. 选择合并类型--合并两个不同的树 Merge -> Next 3. ...
- 一款简单射击游戏IOS源码
源码描述: 一款基于cocos2d的简单设计游戏,并且也是一款基于cocos2d的简单射击游戏(含苹果IAD广告), 游戏操作很简单,哪个数字大就点击射击哪个.里面有苹果iad广告,功能简单完整,适合 ...
- TCP/UDP详解
转载:http://www.cnblogs.com/visily/archive/2013/03/15/2961190.html, 作者:望梅止渴 相关: HTTP协议详解 深入理解HTTP协议 T ...
- maven私服搭建和启动遇到的问题
1.私服下载地址:http://www.sonatype.org/nexus/ 2.在win10中安装nexus时提示:wrapper | OpenSCManager failed - 拒绝访问. ( ...