public void Login(string loginName, string password, Action <ResponseBase> callback) { Guid messageId = Guid.NewGuid(); Task.Factory.StartNew(() => { try { using (var service = CreateService()) { LoginControlCenterRequest request = new LoginControlCenterRequest { MessageId = messageId, LoginName = loginName, Timestamp = DateTime.Now }; request.SignIt(password); ResponseBase response = service.LoginControlCenter(request); callback?.Invoke(response); } } catch (CommunicationException e) { Global.DebugLine(e.Message, ConsoleColor.Red); callback?.Invoke(ResponseBase.ClientError(messageId, e.Message)); } catch (Exception e) { Global.Logger.Error(e.Message, e); callback?.Invoke(ResponseBase.ClientError(messageId, e.Message)); } }); }
public ResponseBase LoginControlCenter(LoginControlCenterRequest request) { if (request == null) { return(LoadClientsResponse.InvalidInput(Guid.Empty, "参数错误")); } try { if (string.IsNullOrEmpty(request.LoginName)) { return(ResponseBase.Forbidden(request.MessageId, "登录名不能为空")); } if (!HostRoot.Current.UserSet.TryGetKey(request.LoginName, out IUser key)) { return(ResponseBase.Forbidden(request.MessageId, "登录名不存在")); } if (!request.Timestamp.IsInTime()) { return(ResponseBase.Expired(request.MessageId)); } if (request.Sign != request.GetSign(key.Password)) { return(ResponseBase.Forbidden(request.MessageId, "密码错误")); } return(ResponseBase.Ok(request.MessageId)); } catch (Exception e) { Global.Logger.ErrorDebugLine(e.Message, e); return(ResponseBase.ServerError(request.MessageId, e.Message)); } }