예제 #1
0
        /// <summary>
        /// 将指定用户踢下线,并添加用户退出日志
        /// </summary>
        public void UserExit(string userHashKey)
        {
            //添加用户退出日志
            Save(userHashKey, "用户【{0}】给管理员【" + OnlineUsersBll.GetInstence().GetManagerCName() + "】踢出系统!在线时间【{1}】");

            //删除数据库记录与IIS缓存
            OnlineUsersBll.GetInstence().Delete(null, ConvertHelper.Cint0(OnlineUsersBll.GetInstence().GetUserOnlineInfo(userHashKey, OnlineUsersTable.Manager_Id)));
            //清除在线缓存Hashtable记录
            OnlineUsersBll.GetInstence().RemoveUser(userHashKey + "");
        }
예제 #2
0
        /// <summary>
        /// 设置页面加密--用于检查用户是否从正确的路径进入本页面
        /// </summary>
        /// <param name="key">页面加密的Key</param>
        /// <returns>加密后的字符串</returns>
        public string SetPageEncrypt(string key)
        {
            //当前用户md5
            var md5 = OnlineUsersBll.GetInstence().GetMd5();
            //加密:md5+Key
            var encrypt = DotNet.Utilities.Encrypt.Md5(md5 + key);

            //再次加密:Key + Encrypt
            return(Encrypt.Md5(key + encrypt));
        }
예제 #3
0
        /***********************************************************************
        * 自定义函数                                                          *
        ***********************************************************************/
        #region 自定义函数

        #region 添加用户操作日志
        /// <summary>
        /// 添加用户操作日志
        /// </summary>
        /// <param name="page">页面指针</param>
        /// <param name="useLogOccurrence">用户操作内容备注,{0}=用户名称,{1}=当前页面名称</param>
        public void Save(Page page, string useLogOccurrence)
        {
            try
            {
                //创建用户操作日志对象
                var uselog = new UseLog();
                //记录登录时间
                uselog.AddDate = DateTime.Now;
                //当前用户ID
                uselog.Manager_Id = OnlineUsersBll.GetInstence().GetManagerId();
                //当前用户名称
                uselog.Manager_CName = OnlineUsersBll.GetInstence().GetManagerCName();
                //当前页面ID
                var menu = MenuInfoBll.GetInstence().GetMenuInfo(page.Request.Url.AbsolutePath);
                if (menu == null)
                {
                    uselog.MenuInfo_Id = 0;
                }
                else
                {
                    uselog.MenuInfo_Id = menu.Id;
                    //当前页面名称
                    uselog.MenuInfo_Name = menu.Name;
                }

                //判断是否为首页
                if (uselog.MenuInfo_Id == 0)
                {
                    if (page.Request.Url.AbsolutePath.Equals("/WebManage/Main.aspx"))
                    {
                        //当前页面名称
                        uselog.MenuInfo_Name = "首页";
                    }
                }

                //当前用户IP
                uselog.Ip = IpHelper.GetUserIp();

                //操作内容
                uselog.Notes = StringHelper.FilterSql(String.Format(useLogOccurrence, uselog.Manager_CName, uselog.MenuInfo_Name));
                //插入记录
                uselog.Save();
            }
            catch (Exception e)
            {
                //记录日志
                CommonBll.WriteLog("添加用户操作日志时出现异常", e);
            }
        }
예제 #4
0
        /// <summary>
        /// 添加用户访问页面记录
        /// </summary>
        public static void UserRecord(Page page)
        {
            //检查用户是否存在
            OnlineUsersBll.GetInstence().IsTimeOut();

            //获取当前用户的编号
            var userHashKey = OnlineUsersBll.GetInstence().GetUserHashKey();

            //获取当前页面名称
            var menuName = "";
            //取得当前页面实体
            var menu = MenuInfoBll.GetInstence().GetMenuInfo(page.Request.Url.AbsolutePath);

            if (menu != null)
            {
                menuName = menu.Name;
            }
            //判断是否为首页
            if (string.IsNullOrEmpty(menuName))
            {
                if (page.Request.Url.AbsolutePath.Equals("/WebManage/Main.aspx"))
                {
                    //当前页面名称
                    menuName = "首页";
                }
            }

            //更新当前用户所在页面路径
            OnlineUsersBll.GetInstence().UpdateUserOnlineInfo(userHashKey, OnlineUsersTable.CurrentPage, page.Request.Url.AbsolutePath);
            //更新当前用户所在页面名称
            OnlineUsersBll.GetInstence().UpdateUserOnlineInfo(userHashKey, OnlineUsersTable.CurrentPageTitle, menuName);
            //同步更新数据库
            //设置需要更新的字段
            var dic = new Dictionary <string, object>();

            dic.Add(OnlineUsersTable.CurrentPage, page.Request.Url.AbsolutePath);
            dic.Add(OnlineUsersTable.CurrentPageTitle, menuName);
            //设置更新条件
            var wheres = new List <ConditionFun.SqlqueryCondition>();

            wheres.Add(new ConditionFun.SqlqueryCondition(ConstraintType.And, OnlineUsersTable.UserHashKey, Comparison.Equals, userHashKey));
            //更新
            OnlineUsersBll.GetInstence().UpdateValue(page, dic, wheres, "", true, false);

            //添加用户访问记录
            UseLogBll.GetInstence().Save(page, "{0}进入了【{1}】页面");
        }
예제 #5
0
        /// <summary>
        /// 添加用户访问页面记录
        /// </summary>
        public static void UserRecord(Page page)
        {
            //获取当前用户的编号
            var userHashKey = OnlineUsersBll.GetInstence().GetUserHashKey();

            //获取当前页面名称
            var menuName = "";
            //取得当前页面实体
            var menu = MenuInfoBll.GetInstence().GetMenuInfo(page.Request.Url.AbsolutePath);

            if (menu != null)
            {
                menuName = menu.Name;
            }
            //判断是否为首页
            if (string.IsNullOrEmpty(menuName))
            {
                if (page.Request.Url.AbsolutePath.Equals("/WebManage/Main.aspx"))
                {
                    //当前页面名称
                    menuName = "首页";
                }
            }

            //更新当前用户所在页面路径
            OnlineUsersBll.GetInstence()
            .UpdateUserOnlineInfo(userHashKey, OnlineUsersTable.CurrentPage, page.Request.Url.AbsolutePath);
            //更新当前用户所在页面名称
            OnlineUsersBll.GetInstence().UpdateUserOnlineInfo(userHashKey, OnlineUsersTable.CurrentPageTitle, menuName);

            //同步更新数据库与缓存
            //获取在线用户Id
            var id = OnlineUsersBll.GetInstence().GetOnlineUsersId();

            if (id > 0)
            {
                //更新
                OnlineUsersBll.GetInstence()
                .UpdateValue(page, id, OnlineUsersTable.CurrentPage, page.Request.Url.AbsolutePath,
                             OnlineUsersTable.CurrentPageTitle, menuName, "", true, false);
            }

            //添加用户访问记录
            UseLogBll.GetInstence().Save(page, "{0}进入了【{1}】页面");
        }
예제 #6
0
        /// <summary>
        /// 检查当前菜单或页面是否有权限访问
        /// </summary>
        /// <param name="menuId">菜单ID</param>
        /// <returns>真或假</returns>
        public bool CheckPagePower(string menuId)
        {
            var pagePower = OnlineUsersBll.GetInstence().GetPagePower();

            if (string.IsNullOrEmpty(pagePower) || menuId == "")
            {
                return(false);
            }
            //检查是否有权限
            if (
                pagePower.IndexOf("," + menuId + ",") >= 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #7
0
        /***********************************************************************
        * 自定义函数                                                          *
        ***********************************************************************/
        #region 自定义函数

        #region 添加用户登陆日志
        /// <summary>
        /// 添加用户登陆日志
        /// </summary>
        /// <param name="userHashKey">登录用户在线列表的HashTable Key</param>
        /// <param name="notes">用户登录内容备注,{0}=用户名称,{1}=用户在线时间</param>
        public void Save(string userHashKey, string notes)
        {
            try
            {
                //创建登录日志对象,便于登录日志的添加
                var loginlog = new LoginLog();
                //记录登录时间
                loginlog.AddDate = DateTime.Now;
                //在线时长
                var loginDuration = "未知";

                //获取用户在线实体
                var model = OnlineUsersBll.GetInstence().GetOnlineUsersModel(userHashKey);
                if (model != null)
                {
                    //当前用户ID
                    loginlog.Manager_Id = model.Manager_Id;
                    //当前用户名称
                    loginlog.Manager_CName = model.Manager_CName;
                    //当前用户IP
                    loginlog.Ip = model.LoginIp;
                    //计算在线时长
                    loginDuration = CommonBll.LoginDuration(model.LoginTime, model.UpdateTime);
                }
                else
                {
                    //当前用户ID
                    loginlog.Manager_Id = 0;
                    //当前用户名称
                    loginlog.Manager_CName = "";
                    //当前用户IP
                    loginlog.Ip = IpHelper.GetUserIp();
                }

                //日志记录说明
                loginlog.Notes = String.Format(notes, loginlog.Manager_CName, loginDuration);

                loginlog.Save();
            }
            catch (Exception) { }
        }
예제 #8
0
        /***********************************************************************
        * 自定义函数                                                          *
        ***********************************************************************/
        #region 自定义函数

        #region 添加用户登陆日志
        /// <summary>
        /// 添加用户登陆日志
        /// </summary>
        /// <param name="userHashKey">登录用户在线列表的HashTable Key</param>
        /// <param name="notes">用户登录内容备注,{0}=用户名称,{1}=用户在线时间</param>
        public void Save(string userHashKey, string notes)
        {
            try
            {
                //创建登录日志对象,便于登录日志的添加
                var loginlog = new LoginLog();
                //记录登录时间
                loginlog.AddDate = DateTime.Now;
                //当前用户ID
                loginlog.Manager_Id = ConvertHelper.Cint0(OnlineUsersBll.GetInstence().GetUserOnlineInfo(userHashKey, OnlineUsersTable.Manager_Id));

                //当前用户名称
                loginlog.Manager_CName = OnlineUsersBll.GetInstence().GetUserOnlineInfo(userHashKey, OnlineUsersTable.Manager_CName) + "";
                //当前用户IP
                loginlog.Ip = OnlineUsersBll.GetInstence().GetUserOnlineInfo(userHashKey, OnlineUsersTable.LoginIp) + "";
                //日志记录说明
                loginlog.Notes = String.Format(notes, loginlog.Manager_CName, CommonBll.LoginDuration(OnlineUsersBll.GetInstence().GetUserOnlineInfo(userHashKey, OnlineUsersTable.LoginTime)));

                loginlog.Save();
            }
            catch (Exception) { }
        }
예제 #9
0
        /// <summary>
        /// 检查用户是否从正确的路径进入本页面,默认KEY为ID
        /// </summary>
        public void CheckPageEncrypt(Page page)
        {
            //当前用户md5
            var md5 = OnlineUsersBll.GetInstence().GetMd5();
            //Key,如果没有传递Key这个变量过来的,就读取id或ParentID做为Key使用
            var key = HttpContext.Current.Request["Id"];

            if (string.IsNullOrEmpty(key))
            {
                key = HttpContext.Current.Request["pid"];
            }
            if (string.IsNullOrEmpty(key))
            {
                key = HttpContext.Current.Request["ParentId"];
            }
            if (string.IsNullOrEmpty(key))
            {
                key = HttpContext.Current.Request["Key"];
            }
            //上一链接传过来的加密数据
            var keyEncrypt = HttpContext.Current.Request["KeyEncrypt"];

            //加密:md5+Key
            var encrypt = Encrypt.Md5(md5 + key);

            //再次加密:Key + Encrypt
            encrypt = Encrypt.Md5(key + encrypt);

            //检查是否有权限,没有权限的直接终止当前页面的运行
            if (keyEncrypt != encrypt || string.IsNullOrEmpty(key))
            {
                //添加用户访问记录
                UseLogBll.GetInstence().Save(page, "{0}没有权限访问【{1}】页面");

                HttpContext.Current.Response.Write("你从错误的路径进入当前页面!");
                HttpContext.Current.Response.End();
            }
        }