public async Task <IActionResult> Login([FromBody] LoginRequestInfo info) { try { LoginResponseInfo response = await _usersManager.AuthenticateUser(info); if (response != null) { return(Ok(response)); } else { return(BadRequest()); } } catch (Exception ex) { return(BadRequest()); } }
/// <summary> /// 启动NodeServer /// </summary> public Task StartAsync() { logger.LogInformation("Server is loading services."); LoadServices(); logger.LogInformation("Server load services success."); server.OnRecieveLoginRequest += new RecieveLoginRequestDelegate(async(loginAuthInfo) => { var loginInfo = new LoginRequestInfo() { Body = loginAuthInfo.Body, Attachments = loginAuthInfo.Attachments, RemoteAddress = loginAuthInfo.RemoteAddress }; var loginAuthResult = await loginValidator.Validate(loginInfo); return(new LoginResponseData() { AuthIdentity = loginAuthResult.AuthIdentity, Attachments = loginAuthResult.Attachments, AuthFailedMessage = loginAuthResult.AuthFailedMessage, AuthResult = loginAuthResult.AuthResult, AuthStatusCode = loginAuthResult.AuthStatusCode }); }); server.OnRecieveServiceRequest += new RecieveServiceRequestDelegate(async(byte[] message, IDictionary <string, byte[]> attachments, LoginState loginState) => { var serviceProcessTimeBegin = DateTime.Now; var serviceRequest = await serializer.DeserializeAsync(protocolStackFactory.ServiceRequestType, message) as IServiceRequest; RouteDescription route = null; try { route = RouteManager.GetRoute(serviceRequest.ServiceId, serviceRequest.ActionId); } catch (RouteNotFoundException ex) { logger.LogError(ex, $"RouteManager.GetRoute has error, route is not exist. ServiceId={serviceRequest.ServiceId}, ActionId={serviceRequest.ActionId}, ExceptionMessage={ex.Message}"); return(await CreateServiceExceptionResponseDataAsync(ServiceExceptionKeys.SERVICE_NOT_EXIST_ERROR)); } catch (Exception ex) { logger.LogError(ex, $"RouteManager.GetRoute has error, ServiceId={serviceRequest.ServiceId}, ActionId={serviceRequest.ActionId}, ExceptionMessage={ex.Message}"); return(await CreateSystemExceptionResponseDataAsync(SystemExceptionKeys.SYSTEM_ERROR)); } logger.LogDebug($"Get route info. ServiceId={route.ServiceId}, ActionId={route.ActionId}, ServiceType={route.ServiceType}, ActionType={route.ActionType}"); var context = new ServiceContext(config.Host, config.Port, loginState.Identity, loginState.RemoteAddress, route, serviceRequest.ParamList, attachments); var serviceProcessResult = await serviceProcessor.ProcessAsync(context); logger.LogInformation($"Service process used time: {DateTime.Now - serviceProcessTimeBegin}, ServiceId={serviceRequest.ServiceId}, ActionId={serviceRequest.ActionId}"); return(new ResponseData() { Attachments = serviceProcessResult.Attachments, Data = await serializer.SerializeAsync(serviceProcessResult.ServiceResponse) }); }); logger.LogInformation("Server is binding."); OnStarting?.Invoke(new NodeServerStartEventArg(config.Host, config.Port, RouteManager.GetAllRoutes())); return(server.StartAsync().ContinueWith(task => { if (task.Exception != null) { logger.LogError(task.Exception, $"Server start has error. Host={config.Host}, Port={config.Port}, ExceptionMessage={task.Exception.InnerException.Message}, ExceptionStackTrace={task.Exception.InnerException.StackTrace}"); return; } logger.LogInformation($"Server listen port {config.Port}"); OnStarted?.Invoke(new NodeServerStartEventArg(config.Host, config.Port, RouteManager.GetAllRoutes())); })); }