/// <summary> /// 根据会员在线ID获取在线会员信息 /// </summary> /// <param name="userOnlineId"></param> /// <returns></returns> public static UserOnlineInfo getUserOnlineInfo(bool safe = false) { var info = getOnlineUser; if (info == null) { info = new UserOnlineInfo() { UserOnlineId = Guid.NewGuid().ToString("N"), IP = Fetch.getClientIP(), StartDate = SiteConfig.getLocalTime(), Url = Fetch.getRawUrl(), UnsafeVisitsNum = -1, StatisticsDate = SiteConfig.getLocalTime().AddMinutes(10), }; info.SafeKey = Utils.MD5(info.IP); info.UserInfo = getVisitor(); getOnlineUser = info; } browseHistory(info, safe); return(info); }
private static void WriteInFile(UserOnlineInfo info, string path = "") { var directory = $"{path}\\{info.Id}\\{info.DateTime.Year}\\{info.DateTime.Month}"; var name = info.DateTime.Day.ToString(); FileWriter.WriteInFile(directory, name, $"{info.DateTime:HH:mm:ss} : {info.OnlineInfo}{Environment.NewLine}"); }
/// <summary> /// 注册用户 /// </summary> /// <param name="clmngr"></param> /// <param name="uid"></param> /// <returns></returns> protected override bool RegistUser(ClientManager clmngr, int uid) { if (clmngr == null || uid < 1 || !this._Clients.ContainsKey(clmngr.nSessionID)) { return(false); } clmngr.IsAuthedUser = true; clmngr.nUID = uid; if (_Users.ContainsKey(uid)) { UserOnlineInfo onlineUser = _Users[uid] as UserOnlineInfo; if (!onlineUser.IsOnline) { onlineUser.SetLogin(); } onlineUser.RefreshActiveTime(); } else { UserOnlineInfo onlineUser = new UserOnlineInfo(uid); onlineUser.SetLogin(); lock (_Users.SyncRoot) { _Users[uid] = onlineUser; } } return(true); }
public UserOnlineInfo MyUser; //= UserManage.UserInfo; #region 初始化 在OnInit执行 /// <summary> /// 设置当前登录人的信息 /// 设置元数据的数据库的实例 /// </summary> /// <param name="e"></param> protected override void OnInit(EventArgs e) { var debugInfo = new NatureDebugInfo { Title = "[Nature.Service.Ashx.BaseAshx]判断Url参数" }; base.OnInit(e); //验证是否已经登录 //如果已经登录了,加载登录人员的信息, var manageUser = new ManageUser { Dal = Dal }; UserWebappInfo userWebappInfo = AppManage.UserWebappInfoByCookies(debugInfo.DetailList); if (userWebappInfo.State != UserState.NormalAccess) { //没有登录。 Response.Write("您还没有登录,请到<a href='/default.aspx' target='_top'>这里</a>登录"); Response.End(); } MyUser = manageUser.CreateUser(Convert.ToString(userWebappInfo.UserWebappID), null); //保存访问日志 //SaveViewLog(); }
private static MongoOnlineInfo Map(UserOnlineInfo userOnlineInfo) { return(new MongoOnlineInfo { DateTime = userOnlineInfo.DateTime, OnlineInfo = userOnlineInfo.OnlineInfo }); }
/// <summary> /// 根据清除登陆信息 /// </summary> public static void clearUserOline() { var onlineInfo = getUserOnlineInfo(); if (onlineInfo != null) { getOnlineUser.UserInfo = getVisitor(); onlineInfo.UserId = -1; getOnlineUser = onlineInfo; } }
/// <summary> /// 监控线程 /// </summary> /// <param name="stateInfo"></param> internal virtual void StartWorkerProcessing(Object stateInfo) { try { UserOnlineInfo onlineUser = null; int uid = 0; int onlineTimePlus = 0; List <int> offLineUIDList = null; _MonitorCheckSuccessTimes++; if (_Users.Count > 0) { offLineUIDList = new List <int>(_Users.Count); lock (_Users.SyncRoot) { if (_Users.Count > 0) { foreach (DictionaryEntry item in _Users) { onlineUser = (UserOnlineInfo)item.Value; uid = (int)item.Key; if (!onlineUser.IsOnline) { offLineUIDList.Add(uid); onlineUser.SetLogoff(); } // 收集在线时长 onlineTimePlus = onlineUser.CollectOnlineTime(); //if (onlineTimePlus > 0) // _ServerStatManager.SaveUserOnlineTime(uid, onlineTimePlus); } if (offLineUIDList.Count > 0) { foreach (int offLineUID in offLineUIDList) { _Users.Remove(offLineUID); } } } } } } catch (Exception ex) { _MonitorCheckErrorTimes++; Console.WriteLine(string.Format("监测线程工作出现异常({0}):{1}", DateTime.Now.ToString(), ex.Message)); } finally { } Console.Write("\rConn:{0} Users:{1} Check:{2} Req:{3} \r", _Clients.Count, _Users.Count, _MonitorCheckSuccessTimes, _RequestTimes); }
protected void Button1_Click(object sender, EventArgs e) { string userCode = txtUserCode.Value; // Request.Form["userCode"]; string userPsw = txtUserPsw.Value; //实现登录 userCode = userCode.Replace("'", "''"); userPsw = Functions.ToMD5(userPsw); var dal = CommonClass.SetMetadataDal(); const string sql = "SELECT TOP 1 userID from Person_User_Info where UserCode='{0}' and LoginPsw ='{1}'"; string userId = dal.DalUser.ExecuteString(string.Format(sql, userCode, userPsw)); if (dal.DalUser.ErrorMessage.Length > 2) { //debugInfo.Remark = "到数据库验证登录账户和密码,出现异常!"; Response.Write("<br>" + dal.DalUser.ErrorMessage); } if (dal.DalUser.ErrorMessage.Length > 2) { //debugInfo.Remark = "到数据库验证登录账户和密码,出现异常!"; Response.Write("\"msg\":\"" + dal.DalUser.ErrorMessage + "\""); return; } if (string.IsNullOrEmpty(userId)) { Response.Write("\"msg\":\"用户名和密码不匹配!\""); return; } Response.Write("<br>" + userId); var mUser = new ManageUser { Dal = dal }; var debugInfo2 = new NatureDebugInfo { Title = "判断访问权限" }; UserOnlineInfo user = mUser.CreateUser(userId, debugInfo2.DetailList); Response.Write("<br>" + user.BaseUser.UserID); Functions.PageRegisterJavascript(Page, "isLogin();"); }
/// <summary> /// 设置会员在线 /// </summary> /// <param name="userInfo"></param> public static void setUserOnline(BasicUserInfo userInfo, int days = 0) { var onlineInfo = getUserOnlineInfo(); if (days > 0) { setKeyExpires(days); } onlineInfo.UserInfo = userInfo; onlineInfo.UserName = userInfo.UserName; onlineInfo.UserId = userInfo.UserId; getOnlineUser = onlineInfo; }
/// <summary> /// 设置授权会员在线 /// </summary> /// <param name="userInfo"></param> public static void setOAuthOnline(UserBindInfo userBindInfo) { var onlineInfo = getUserOnlineInfo(); onlineInfo.UserBindInfo = userBindInfo; if (onlineInfo.UserId <= 0 && userBindInfo.UserId > 0)//设置会员在线 { onlineInfo.UserInfo.UserId = userBindInfo.UserId; onlineInfo.UserId = userBindInfo.UserId; } onlineInfo.UserInfo.UserName = userBindInfo.NickName; onlineInfo.UserName = userBindInfo.NickName; onlineInfo.IsOAuth = true; getOnlineUser = onlineInfo; }
/// <summary> /// 更新验证码 /// </summary> /// <param name="info"></param> /// <param name="account">账号</param> /// <param name="code">验证码</param> /// <param name="minute">分钟</param> public static Entity.VerifyCode setVerifyCode(UserOnlineInfo info, string account, string code, int minute = 0) { var codeList = info.VerifyCode; Entity.VerifyCode codeInfo = codeList.Find(g => g.Account.Equals(account)); if (codeInfo == null) { codeInfo = new Entity.VerifyCode(); codeInfo.Account = account.ToLower(); info.VerifyCode.Add(codeInfo); } codeInfo.Code = code.ToLower(); if (minute > 0) { codeInfo.Deadline = Config.SiteConfig.getLocalTime().AddMinutes(minute); } else { codeInfo.Deadline = null; } return(codeInfo); }
/// <summary> /// 卸载用户 /// </summary> /// <param name="clmngr"></param> public void UnRegistUser(ClientManager clmngr) { if (clmngr == null || !clmngr.IsAuthedUser) { return; } int uid = clmngr.nUID; try { if (_Users.ContainsKey(uid)) { UserOnlineInfo user = _Users[uid] as UserOnlineInfo; user.SocketOpen = false; } } catch { } finally { clmngr.IsAuthedUser = false; } }
/// <summary> /// 更新浏览记录 /// </summary> private static void browseHistory(UserOnlineInfo onlineInfo, bool safe = false) { var ip = Fetch.getClientIP(); var date = SiteConfig.getLocalTime(); var span = date - onlineInfo.StatisticsDate; if (!safe) { if (span.TotalSeconds < 1.0) { onlineInfo.StatisticsDate = date; onlineInfo.UnsafeVisitsNum++; } else if (span.TotalSeconds > 10 && onlineInfo.UnsafeVisitsNum > 5)//会员登录错误次数在5以下使用 { onlineInfo.UnsafeVisitsNum--; } } onlineInfo.RefreshDate = date; onlineInfo.UrlReferrer = onlineInfo.Url; onlineInfo.Url = Fetch.getRawUrl(); }
private bool IsLastInfoDifferent(UserOnlineInfo info) { return(!_lastInfo.ContainsKey(info.Id) || _lastInfo[info.Id] != info.OnlineInfo); }
/// <summary> /// 获取用户在线状态码 /// </summary> /// <param name="uid"></param> /// <returns></returns> public OnlineCodeValue GetUserOnlineCode(int uid) { UserOnlineInfo user = GetUserOnlineInfo(uid); return(user != null ? user.OnlineStatusCode : OnlineCodeValue.Offline); }
public DTLoginInfo LoginFB(int idMovimiento, String accesToken) { if (null == accesToken) { throw new ArgumentNullException(); } FacebookUser fbUser = Facebook.GetInfo(accesToken); // busco el usuario en la base de datos var db = new IndignadoDBDataContext(); var fbUserDB = db.UsuarioFacebooks.SingleOrDefault(u => (u.idMovimiento == idMovimiento && u.idFacebook == fbUser.id)); if (fbUserDB == null) { throw new FaultException<LoginFault>(new LoginFault("El usuario logueado por facebook no se encuentra registrado", DTLoginFaultType.FB_NOT_REGISTERED)); } var userDB = db.Usuarios.SingleOrDefault(u => (u.id == fbUserDB.idUsuario)); if (userDB.banned) { Usuario movAdmin = db.Usuarios.SingleOrDefault(u => (u.idMovimiento == idMovimiento) && ((u.privilegio & IndignadoServer.Roles.MovAdminMask) == IndignadoServer.Roles.MovAdminMask)); throw new FaultException("The user is banned, please contact the movement administrator at " + movAdmin.mail + "."); } String token = GenerateToken(); _usersOnline[token] = new UserOnlineInfo(userDB.id, userDB.apodo, userDB.privilegio, idMovimiento, token); bool isRegUser = true; bool isMovAdmin = (userDB.privilegio & IndignadoServer.Roles.MovAdminMask) == IndignadoServer.Roles.MovAdminMask; bool isSysAdmin = (userDB.privilegio & IndignadoServer.Roles.SysAdminMask) == IndignadoServer.Roles.SysAdminMask; return new DTLoginInfo(userDB.apodo, userDB.id, token, isRegUser, isMovAdmin, isSysAdmin); }
public DTLoginInfo Login(int idMovimiento, String userName, String password) { if (null == userName || null == password) { throw new ArgumentNullException(); } // calculo el hash del password HashAlgorithm sha = new SHA1CryptoServiceProvider(); byte[] passwordHash = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password)); byte[] noPass = new byte[1]; noPass[0] = 0; // busco el usuario en la base de datos var db = new IndignadoDBDataContext(); var user = db.Usuarios.SingleOrDefault(u => (u.idMovimiento == idMovimiento && u.apodo == userName && u.contraseña == passwordHash && u.contraseña != noPass) || (u.apodo == userName && u.contraseña == passwordHash && u.contraseña != noPass && (u.privilegio & IndignadoServer.Roles.SysAdminMask) == IndignadoServer.Roles.SysAdminMask)); // usuario inexistente o contraseña incorrecta. if (user == null) { throw new FaultException("Unknown username or incorrect password"); } // usuario deshabilitado. bool isRegUser = true; bool isMovAdmin = (user.privilegio & IndignadoServer.Roles.MovAdminMask) == IndignadoServer.Roles.MovAdminMask; bool isSysAdmin = (user.privilegio & IndignadoServer.Roles.SysAdminMask) == IndignadoServer.Roles.SysAdminMask; if (user.banned && !isMovAdmin && !isSysAdmin) { Usuario movAdmin = db.Usuarios.SingleOrDefault(u => (u.idMovimiento == idMovimiento) && ((u.privilegio & IndignadoServer.Roles.MovAdminMask) == IndignadoServer.Roles.MovAdminMask)); throw new FaultException("The user is banned, please contact the movement administrator at " + movAdmin.mail + "."); } String token = GenerateToken(); _usersOnline[token] = new UserOnlineInfo(user.id, user.apodo, user.privilegio, idMovimiento, token); return new DTLoginInfo(user.apodo, user.id, token, isRegUser, isMovAdmin, isSysAdmin); }