public async Task <ActionResult <AuthenticationResult> > Post([FromBody] LoginInfo loginInfo)
        {
            WechatToken wechatToken;

            try
            {
                wechatToken = await _wechatApi.GetWechatToken(loginInfo.WechatCode);
            }
            catch (WechatApiException)
            {
                return(AuthenticationResult.Failure("无效的 Wechat code"));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "通过微信 API 获取 access_code 时发生异常:{0}:{1}", ex.GetType(), ex.Message);
                throw;
            }

            UserEntity userEntity;

            try
            {
                userEntity = await _dataFacade.AddOrFindUserByWechatId(wechatToken.OpenId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "根据微信 ID 向数据源插入或查找用户数据时抛出异常:{0}:{1}", ex.GetType(), ex.Message);
                throw;
            }

            var token = new AuthenticationToken(userEntity.Id, userEntity.IsAdmin, wechatToken);

            return(AuthenticationResult.Success(userEntity.Id, userEntity.IsAdmin, _jwt.Encode(token)));
        }