React+ASP.NET Core7更新用户邮箱异常排查求助
邮箱更新功能前端调用异常排查
我在React前端与ASP.NET Core 7后端构建的项目中实现了用户邮箱更新功能,遇到以下问题:通过Swagger调用API可正常更新数据库中的邮箱信息,但通过前端代码调用时,始终会将邮箱更新为'abc@gmail.com',且未返回任何错误。
前端代码
API调用方法及请求体结构
const response = await axiosInstance.put(UPDATE_USEREMAIL, { userEmail });
axios实例定义
import axios from 'axios'; import { HOST_API_KEY } from './globalConfig'; const axiosInstance = axios.create({ baseURL: HOST_API_KEY }); axiosInstance.interceptors.response.use( (response) => response, // 返回成功响应 (error) => // 处理错误 Promise.reject( (error.response && error.response) || 'General Axios Error happend' ) ); export default axiosInstance;
后端代码
接收数据的DTO结构
using System.ComponentModel.DataAnnotations; namespace backend_dotnet7.Core.Dtos.Auth { public class UpdateUserEmailDto { [Required(ErrorMessage = "User Email is required")] public string? Email { get; set; } } }
API接口方法
[HttpPut] [Route("updateUserEmail")] [Authorize] public async Task<ActionResult<UpdateUserEmailResponseDto>> updateUserEmail(UpdateUserEmailDto updateUserEmailDto) { try { var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (userId is null) { return StatusCode(StatusCodes.Status400BadRequest, "Can't find user, Please contact admin"); } var isExists = await _userManager.FindByIdAsync(userId); if (isExists is null) { return StatusCode(StatusCodes.Status404NotFound, "User does not exists"); } if(updateUserEmailDto.Email is null) { return StatusCode(StatusCodes.Status400BadRequest, "null"); } var isValid = await _userEmailService.EmailValidation(updateUserEmailDto.Email); if (!isValid) { return StatusCode(StatusCodes.Status400BadRequest, "User Email is invalid"); } isExists.Email = updateUserEmailDto.Email; var result = await _userManager.UpdateAsync(isExists); if (!result.Succeeded) { var errors = result.Errors.Select(e => e.Description).ToList(); return StatusCode(StatusCodes.Status400BadRequest, errors); } var userInfoObject = new UserInfoResult { Id = isExists.Id, FirstName = isExists.FirstName, LastName = isExists.LastName, Email = isExists.Email, UserName = isExists.UserName, CreatedAt = isExists.CreatedAt, Roles = isExists.Roles }; return new UpdateUserEmailResponseDto { userInfo = userInfoObject, }; } catch (Exception ex) { _userLogger.LogError(ex.Message); return StatusCode(StatusCodes.Status500InternalServerError, ex.Message); } }
内容的提问来源于stack exchange,提问作者Chinthaka Senarathna
相关产品推荐
相关产品推荐

