首先我们要了解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实现简单的后台操作日志功能的更多相关文章

  1. MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能

    1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...

  2. MVC4.0 利用IActionFilter实现单一Action返回多种结果

    延续MVC4.0 实现单一Action返回多种结果,我们实现了在一个Action中根据前台请求方式的不同和请求内容的不同返回了多个结果,但是这种返回多个结果的业务逻辑并不通用.如果现在年纪Action ...

  3. 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作

    这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...

  4. 大数据作业之利用MapRedeuce实现简单的数据操作

    Map/Reduce编程作业 现有student.txt和student_score.txt.将两个文件上传到hdfs上.使用Map/Reduce框架完成下面的题目 student.txt 20160 ...

  5. 利用Spring AOP和自定义注解实现日志功能

    Spring AOP的主要功能相信大家都知道,日志记录.权限校验等等. 用法就是定义一个切入点(Pointcut),定义一个通知(Advice),然后设置通知在该切入点上执行的方式(前置.后置.环绕等 ...

  6. 后台操作日志,插入数据获取的该数据主键ID为null

    代码如下: @Override public void saveTopicResource(TopicResourceModel model, Integer userId) { TopicResou ...

  7. 跟我一起学习ASP.NET 4.5 MVC4.0(二)

    上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一))我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的.因为这一些列主要是要给ASP ...

  8. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)

    一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...

随机推荐

  1. Tomcat安装后启动一闪而过

    出现这种问题一般是环境变量没配置好.除了JDK环境变量还有Tomcat环境变量:CATALINA_HOME 和CATALINA_BASE 虽然JDK里面会含有JRE,但是最好是在环境变量里面也配置一个 ...

  2. Javascript中的Bind 、Call和Apply

    看以下代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 第一眼看上去,我能猜出它究竟是用来做什么的.它把x.y ...

  3. CSS3之动画相关

    CSS3动画相关的属性:transform,transition,animation. 变形Transform 语法: transform: rotate | scale | skew | trans ...

  4. 判断字符串是否包含字母‘k’或者‘K’

    判断字符串是否包含字母‘k’或者‘K’ public bool IsIncludeK(string temp) { temp = temp.ToLower(); if (temp.Contains(' ...

  5. [leetcode]_Valid Parentheses

    题目:判断给定字符串中的括号是否合法.题目中涉及三种符号'(' + ')' , '[' + ']' , '{' + '}'. 思路:利用stack来存储符号. 注意申请char型stack是: Sta ...

  6. hbase与Hadoop

    Hbase是一种低延迟的在线系统,Hadoop是优化吞吐量的离线系统.这种互补关系造就了一种强大的.灵活的数据平台,可以用来搭建水平扩展的数据应用.

  7. php生成excel文件的简单方法

    生成excel文件,最简单的莫过于把数据库的数据导入到excel就行了. 生成excel 当然使用的是 phpExcel http://www.jbxue.com/tags/phpexcel.html ...

  8. 【PHP】文件上传限制

    上传文件,只判断后缀,貌似还不是很严谨; /** * 判断文件是否合法 * @param $files * @param $arrCode * @return number|boolean */ fu ...

  9. 【Delphi】注册快捷键

    ShortCutToText , TextToShortCut 需 uses Menus; type TForm1 = class(TForm) HotKey1: THotKey; Button1: ...

  10. Learning Scrapy笔记(三)- Scrapy基础

    摘要:本文介绍了Scrapy的基础爬取流程,也是最重要的部分 Scrapy的爬取流程 Scrapy的爬取流程可以概括为一个方程式:UR2IM,其含义如下图所示 URL:Scrapy的运行就从那个你想要 ...