コード例 #1
0
        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());
            }
        }
コード例 #2
0
ファイル: DefaultNodeServer.cs プロジェクト: mengtest/XNode
        /// <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()));
            }));
        }