如何获取.NET Core后端API地址在HTML的jQuery中调用实现登录校验
核心问题修正步骤
- API地址获取
本地启动.NET Core项目后,打开Swagger页面,复制浏览器地址栏中/swagger之前的前缀,比如Swagger访问地址是https://localhost:7025/swagger/index.html,那么API的基础地址就是https://localhost:7025,拼接控制器路由api/User后完整的接口地址为https://localhost:7025/api/User,替换前端代码中错误的https://44332/api/User即可。 - 前端POST传参修正
你当前封装的用户信息对象obj没有传入$.post方法,导致后端无法接收到用户名和密码,修改前端script部分的代码如下:
$(document).ready(function(){ $("button").click(function(){ var inputVal = document.getElementById("userinput").value; var passVal = document.getElementById("passinput").value; var obj ={ username:inputVal, password:passVal }; console.log(obj); // 替换为你自己的API实际地址 const apiUrl = "https://localhost:7025/api/User"; $.post(apiUrl, obj, function(res) { alert("登录成功"); }).fail(function(err) { alert(err.responseText || "登录失败,请检查用户名密码"); }); }); });
- 后端跨域配置
本地HTML页面和.NET API端口不同属于跨域请求,需要在.NET项目的Program.cs中添加跨域配置,否则请求会被拦截:
// 新增:在var app = builder.Build();之前添加跨域服务注册 builder.Services.AddCors(options => { options.AddPolicy("DevAllow", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); // 新增:放在app.UseAuthorization();之前 app.UseCors("DevAllow");
- 后端代码安全修正
当前count变量定义为控制器全局变量,多用户并发请求时会出现计数错误,把count变量移动到Post方法内部即可:
[HttpPost] public ActionResult<user> CreateUser( user newUser) { int count = 0; // 移到方法内部,每次请求重新计数 foreach (user item in users.GetAllUsers()) { if (newUser.username == item.username && newUser.password == item.password) { count++; } } if (count == 0) { return StatusCode(StatusCodes.Status500InternalServerError, "Username or password incorrect"); } return Ok("Authentication Successfull"); }
内容的提问来源于stack exchange,提问作者Daher Roy
相关产品推荐
相关产品推荐

