public override async Task OnDisconnectedAsync(Exception exception) { var connectionId = Context.ConnectionId; var name = Context.User.Identity.Name; var userName = _context.ModuleUser.Where(u => u.Email == name).Select(u => u.LastName + " " + u.FirstName).First(); var user = _context.LoggedInUsers.Where(u => u.ConnectionId == connectionId).FirstOrDefault(); if (user != null) { user.ConnectionId = null; _context.LoggedInUsers.Update(user); _context.SaveChanges(); OnLineUser.RemoveUser(connectionId, user.UserId); await Clients.AllExcept(connectionId).SendAsync("onUserDisconnectedAsync", user.UserId, userName, OnLineUser.onLineUserList); //Clients.AllExcept(connectionId).onUserDisconnected(user.UserId, userName, OnLineUser.onLineUserList); } await base.OnDisconnectedAsync(exception); }
/// <summary> /// 生成用户身份令牌 /// </summary> /// <param name="UID">用户UID</param> /// <returns></returns> public string GenerateAccessToken(long UID) { var query = db.OnLineUser.Where(o => o.UID == UID).SingleOrDefault(); if (query == null) { query = new OnLineUser(); query.UID = UID; query.UpdateTime = DateTime.Now; db.OnLineUser.Add(query); } //不为空,则刷新令牌 int Days = 0; int.TryParse(Func.ReadConfig("AccessTokenDays"), out Days); if (query.UpdateTime.AddDays(Days) < DateTime.Now) { query.AccessToken = Guid.NewGuid().ToString(); } query.UpdateTime = DateTime.Now; db.SaveChanges(); return(query.AccessToken); }
public override async Task OnConnectedAsync() { var connectionId = Context.ConnectionId; var name = Context.User.Identity.Name; var user = await _context.ModuleUser.Where(u => u.Email == name).FirstOrDefaultAsync(); if (user != null) { OnLineUser.AddUser(connectionId, user, user.UserId); var loggedUser = _context.LoggedInUsers.Where(u => u.UserId == user.UserId).FirstOrDefault(); if (loggedUser != null) { loggedUser.ConnectionId = connectionId; _context.LoggedInUsers.Update(loggedUser); } else { LoggedInUsers newLUser = new LoggedInUsers(); newLUser.ConnectionId = connectionId; newLUser.UserId = user.UserId; _context.LoggedInUsers.AddRange(newLUser); } var userName = user.LastName + " " + user.FirstName; await Clients.Caller.SendAsync("onConnectedAsync", user.UserId, connectionId, userName, OnLineUser.onLineUserList); await Clients.AllExcept(connectionId).SendAsync("newUserConnected", user.UserId, userName, OnLineUser.onLineUserList); //Clients.Caller.onConnected(user.UserID, connectionId, userName, OnLineUser.onLineUserList); //Clients.AllExcept(connectionId).newUserConnected(user.UserID, userName, OnLineUser.onLineUserList); _context.SaveChanges(); } await base.OnConnectedAsync(); }
public MainForm(string name) { InitializeComponent(); // 设置远程对象 _onLineUser.User = new User { Name = name }; _onLineUser.ReceivedMessageEvent += ReceivedMessage; // 配置信息 var tcpProperties = new Hashtable { ["name"] = "ChatRoom", ["port"] = 0 }; // 设置序列化等级 var tcpClientSinkProvider = new BinaryClientFormatterSinkProvider(); var tcpServerSinkProvider = new BinaryServerFormatterSinkProvider { TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full }; // 注册信道 _channel = new TcpChannel(tcpProperties, tcpClientSinkProvider, tcpServerSinkProvider); ChannelServices.RegisterChannel(_channel, false); // 获取服务端远程对象 _chatRoom = (ChatRoomRemote)Activator.GetObject(typeof(ChatRoomRemote), Url); // 执行登陆 // 将客户端远程对象放入服务端的远程对象中 _onLineUser = _chatRoom.Login(_onLineUser); }
public static string LoginSystem(string iuname, string iupwd) { string r = ""; SysExpireBll seb = new SysExpireBll(); //if (seb.SysExpire()) //{ string jmsz = DES.EncryptDES(iupwd); if (!string.IsNullOrEmpty(iuname) && !string.IsNullOrEmpty(iupwd)) { Sys_User model = new Sys_User(); Sys_Employee ee = new Sys_Employee(); Sys_EmployeeDpt eed = new Sys_EmployeeDpt(); Sys_UserBll sub = new Sys_UserBll(); Sys_EmployeeBll eb = new Sys_EmployeeBll(); model = sub.Query(" and uname='" + iuname + "' and upass='******' and ulogin='******'"); if (model == null) { r = "F"; } else { r = "S"; ee = eb.Query(" and eno='" + model.eno + "'"); if (ee.dcode != "") { Sys_Depment sd = sdb.Query(" and dcode='" + ee.dcode + "'"); ee.dname = sd != null ? sd.dname : ""; } eed = sedb.Query(" and eno='" + ee.eno + "'"); if (eed != null) { ee.etelephone = eed.etelephone; } ee.elname = iuname; HttpContext.Current.Session["LUser"] = ee; Guid uniqueID = Guid.NewGuid(); OnLineUser olu = new OnLineUser(); olu.Gid = uniqueID; olu.Zt = 0; olu.Username = model.uname; UserCacheImp uci = new UserCacheImp(); if (HttpContext.Current.Request.Cookies["Cuser"] != null) { HttpCookie c*k = HttpContext.Current.Request.Cookies["Cuser"]; c*k.Values["cuser"] = System.Web.HttpUtility.UrlEncode(model.uname); HttpContext.Current.Response.AppendCookie(c*k); } else { HttpCookie cookie = new HttpCookie("Cuser"); cookie.Values.Add("cuser", System.Web.HttpUtility.UrlEncode(model.uname)); HttpContext.Current.Response.AppendCookie(cookie); } uci.Add(olu, "U"); } } else { HttpContext.Current.Session["LUser"] = null; r = "F"; } // } //else //{ // r = "F"; //} return(r); }
private void BindUser() { if (Application["online"] == null) { bl_top.InnerHtml = "IM"; } else { hidSender.Value = StringHelper.DesDecrypt(Request.Params["login"]); Users users = new Users(); DataTable userTree = users.GetUserTree(); UserGroup userGroup = new UserGroup(); DataTable groupList = userGroup.GetUserGroup(hidSender.Value); DataRow[] userRow = userTree.Select( string.Format("id = '{0}'", hidSender.Value) ); if (userRow.Length == 0) { hidCnSender.Attributes["outter"] = "1"; changepassword.Attributes["outter"] = "1"; hidCnSender.Value = StringHelper.DesDecrypt(Request.Params["userName"]); hidCnSender.Attributes["lname"] = StringHelper.DesDecrypt(Request.Params["loginName"]); } else { if (userRow[0]["theme"].ToString().Length > 0) { theme = userRow[0]["theme"].ToString(); } hidCnSender.Value = userRow[0]["username"].ToString(); hidrevertMessage.Value = userRow[0]["revertMessage"].ToString(); hidCnSender.Attributes["lname"] = userRow[0]["loginname"].ToString(); hidCnSender.Attributes["outter"] = userRow[0]["isoutter"].ToString(); changepassword.Attributes["outter"] = userRow[0]["isoutter"].ToString(); } GroupRelation groupRelation = new GroupRelation(); DataTable relationList = groupRelation.GetGroupRelation(hidSender.Value); userTreeBuilder = new StringBuilder(); OnLineUser onLineUser = new OnLineUser(); foreach (DataRow group in groupList.Rows) { bool flag = false; if (group["groupname"].ToString().Equals(Profile.unknowGroup)) { flag = true; hidSender.Attributes["unknow"] = group["id"].ToString(); } CreateGroupTop(group["id"].ToString(), group["groupname"].ToString(), true, flag); DataRow[] relationshiperList = relationList.Select( string.Format("usergroup = '{0}'", group["id"]) ); userTreeBuilder.AppendFormat( "<ul class=\"group\" id=\"ul{0}Group\" groupid=\"{0}\" style=\"display : none;\">", group["id"] ); foreach (DataRow relationshiper in relationshiperList) { DataRow[] user = userTree.Select( string.Format("id = '{0}'", relationshiper["relationshiper"]), "username" ); if (user.Length == 1) { int userStatus = onLineUser.GetUserStatus(user[0]["id"].ToString(), Application["online"]); CreateBuddyList( user[0]["id"].ToString(), user[0]["username"].ToString(), user[0]["scratch"].ToString(), user[0]["headImg"].ToString(), userStatus, true ); } } userTreeBuilder.Append("</ul>"); } //����Ԥ�����Լ����� CreateGroupTop("owner", Profile.ownerGroup, true, true); userTreeBuilder.Append("<ul class=\"group\" id=\"ulownerGroup\" groupid=\"owner\" style=\"display : none;\">"); int status = onLineUser.GetUserStatus(hidSender.Value, Application["online"]); statusSettings.Attributes["userstatus"] = status.ToString(); CreateBuddyList( hidSender.Value, hidCnSender.Value, (userRow.Length > 0 ? userRow[0]["scratch"].ToString() : string.Empty), (userRow.Length > 0 ? userRow[0]["headImg"].ToString() : string.Empty), status, false ); userTreeBuilder.Append("</ul>"); buddylist.InnerHtml = userTreeBuilder.ToString(); } if (hidCnSender.Attributes["outter"].Equals("1")) { imgLogout.Attributes["style"] += "display: none;"; changepassword.Attributes["style"] = "display:none"; } hidSender.Attributes["theme"] = theme; bl_top.InnerHtml = string.Format("IM {0}", hidCnSender.Value); hidSender.Attributes["current"] = DateTime.Now.ToString("yyyy-MM-dd"); imgLogout.Src = string.Format("../include/themes/{0}/window/signoff.png", theme); joinroom.Src = string.Format("../include/themes/{0}/window/joinroom.png", theme); addbuddy.Src = string.Format("../include/themes/{0}/window/addbuddy.png", theme); changepassword.Src = string.Format("../include/themes/{0}/window/changepassword.png", theme); }
public SIIS_OnLineUserClass() { onLineUser = new OnLineUserClass(); }