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 ...
随机推荐
- Ossim主要功能实战
Ossim主要功能实战 OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台将Nagiso,Ntop,Snort,Nmap等开源工具集成在一起提供综合的安全保护功能,而不必在各 ...
- nagios架构及windows,linux客户端配置
Linux下Nagios的安装与配置 一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等. ...
- JMeter笔记3:聚合报告之90%Line参数说明
看看JMeter 官网是怎么说的? 90% Line - 90% of the samples took no more than this time. The remaining samples a ...
- C# 多线程传参
using System; using System.Threading; //多线程调试: 2013.10.08 namespace ThreadExample { class App { publ ...
- HBase简介(很好的梳理资料)
http://www.tuicool.com/articles/iieIz2 一. 简介 history started by chad walters and jim 2006.11 G re ...
- final 的用法总结
1.修饰成员变量 修饰普通变量 表明这个变量是一个常量,不可以修改这个变量的值,一般这样的变量的变量名都要大写 修饰引用变量 表明这个引用不能够指向别的对象了,只能够指向指定的这个对象 2.修饰方法 ...
- 让chrome打开手机网页
在chrome快捷方式上点右键: "C:\Program Files\Google\Chrome\Application\chrome.exe" -user-agent=" ...
- C#基础-ref、out
1.默认情况下,C#假定所有的方法参数传递都是传值的. 如下面的方法: public static void Main(string[] args) { int val = 5; //调用AddVal ...
- C#基础-可访问性-public、ptotected、protected internal、internal、private
1.类型的可访问性 a.关键字有public.internal,其中public表示该类型对于程序集都可见.internal表示该类型仅对当前程序集可见.此处的类型可以为类.接口.结构等. b.如果不 ...
- Android版年年有鱼游戏源码
具体的功能如下: 欢迎动画界面 ,游戏运行后首先进入的界面. 菜单的选择,游戏中还需要设计出菜单界面,菜单界面是玩家对游戏的第一印象,菜单界面的美观与否,直接决定着游戏的成功与失败. 游戏的音效,游戏 ...