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))); }