MVC日志记录功能

33 篇文章 0 订阅

1、首先建立日志表

EHECD_AdminUserLog

  后台管理用户日志

  ID主键      ID char(32) 32 TRUE FALSE TRUE

  Name      Code Data Type Length Precision Primary Foreign Key Mandatory

  管理员用ID cAdminUserId char(32) 32 FALSE TRUE FALSE

  姓名      sName nvarchar(10) 10 FALSE FALSE FALSE

  用户IP      sUserIP nvarchar(20) 20 FALSE FALSE FALSE

  操作系统 sOperationSystem nvarchar(20) 20 FALSE FALSE FALSE

  请求地址 sAbsolutePath nvarchar(50) 50 FALSE FALSE FALSE

  浏览器      sBrowser nvarchar(20) 20 FALSE FALSE FALSE

  浏览器版本 sMajorVersion nvarchar(10) 10 FALSE FALSE FALSE

  功能名称 sFunName nvarchar(20) 20 FALSE FALSE FALSE

  操作时间 dCreateTime datetime FALSE FALSE FALSE

 

里面记录存储每个登录用户

127.0.0.1 WinNT /Sys/UserLog/GetUserLog Chrome 44 查询日志 2015-09-07 


2、验证入库类代码(获取参数,录入数据库)

 public delegate void WriteLog();


    public class ValidateAttribute : ActionFilterAttribute
    {
        private string _functionCode;
        private string _functionName;
        private bool _isValidate = false;


        /// <summary>
        /// 只用于登录验证
        /// </summary>
        public ValidateAttribute() { }


        /// <summary>
        /// 用户登录用户权限验证
        /// </summary>
        /// <param name="functionCode"></param>
        public ValidateAttribute(string functionCode) { _functionCode = functionCode; }


        /// <summary>
        /// 验证用户权限并写操作日志
        /// </summary>
        /// <param name="functionCode">权限代码,如果不为null或者空字符串, 则对该用户进行权限验证 可以为空</param>
        /// <param name="functionName">操作日志内容,如果不为null或者空字符串,就对应日志表中的 操作项名称 可以为空</param>
        public ValidateAttribute(string functionCode, string functionName) { _functionCode = functionCode; _functionName = functionName; }




        /// <summary>
        /// 验证用户信息
        /// </summary>
        /// <param name="isOrgUser">是否验证</param>
        /// <param name="functionCode">操作代码,如果不为null或者空字符串, 则对该用户进行权限验证 可以为空</param>
        /// <param name="functionName">操作名称,如果不为null或者空字符串,就对应日志表中的 操作项名称 可以为空</param>
        public ValidateAttribute(bool isValidate, string functionCode, string functionName)
        {
            _isValidate = isValidate;
            _functionCode = functionCode;
            _functionName = functionName;
        }





        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);


            //验证登陆
            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                filterContext.Result = new RedirectResult("/Login/Index");
                return;
            }


            //验证权限
            if (!string.IsNullOrWhiteSpace(_functionCode))
            {
                if (!string.IsNullOrEmpty(_functionCode) && !AccountBll.ValidateUser(_functionCode))
                    throw new Exception(string.Format("对功能 <{0}> 无 操作权限", _functionCode));
            }
            
            //写日志
            if (!string.IsNullOrWhiteSpace(_functionName))
            {
                string ip = Utils.GetIP();
                string url = filterContext.HttpContext.Request.Url.AbsolutePath;
                string browser = filterContext.HttpContext.Request.Browser.Browser;
                string majorVersion = filterContext.HttpContext.Request.Browser.MajorVersion.ToString();
                string platform = filterContext.HttpContext.Request.Browser.Platform;//操作系统


                EHECD_AdminUserLog login = new EHECD_AdminUserLog();
                login.ID = Guid.NewGuid().ToString("N").ToUpper();//MyIdMake.New();
                login.sAbsolutePath = url;
                login.sBrowser = browser;
                login.dCreateTime = DateTime.Now;
                login.sFunName = _functionName;
                login.cAdminUserId = TicketHelper.CurrentTicket.UserId;
                login.sName = TicketHelper.CurrentTicket.UserName;
                login.sMajorVersion = majorVersion;
                login.sOperationSystem = platform;
                login.sUserIP = ip;


                AccountBll.WriteAdminUserLog(login);
            }
        }
    }

3、控制器层调用

    /// <summary>
        /// 保存员工
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <returns>1:成功,0:失败,-1:用户名已存在!</returns>
        [Validate(false, "Employee", "员工管理-保存员工")]
        public int SaveEmployee(EHECD_Employee Employee)
        {
            return EmployeeBll.SaveEmployee(Employee);
        }

4、数据库

ID cAdminUserId sName sUserIP sOperationSystem sAbsolutePath sBrowser sMajorVersion sFunName dCreateTime
8FB1C039B85A4EA18D351411BFA12D16 16CEFDE5955146E4ABF916FA607ABE2A yangk 127.0.0.1 WinNT /Sys/Role/GetRoleFun Chrome 45 角色管理-获取角色功能授权 2015-09-22 15:29:41.257


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值