/// <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 + ""); }
/// <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)); }
/*********************************************************************** * 自定义函数 * ***********************************************************************/ #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); } }
/// <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}】页面"); }
/// <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}】页面"); }
/// <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); } }
/*********************************************************************** * 自定义函数 * ***********************************************************************/ #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) { } }
/*********************************************************************** * 自定义函数 * ***********************************************************************/ #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) { } }
/// <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(); } }