我一直在寻找适当的方向来检查数据库中是否存在登录记录。我的意图是,当用户凭据从登录页面进入时使用登录名和密码并使用异步检查它是否存在。public async Task<ActionResult<ResultsDTO<LoginDTO>>> PostLogin(LoginFormDTO login){ ResultsDTO<LoginFormDTO> output = new ResultDTO<LoginForFoDTO>(); if (!ModelState.IsValid) { output.Success = false; output.SetValidations(ModelState); } LoginFormDTO loginFormDTO = null; try { string encryptedPassword = encryptmystuff(login.pw); // validate login log logUser = _context.log.SingleOrDefault(m => m.name == login.Username && m.password == encryptedPassword); } catch { }}
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
你只需要改变这一行
log logUser = _context.log.SingleOrDefault(m =>
m.name == login.Username && m.password == encryptedPassword);
至
log logUser = await _context.log.SingleOrDefaultAsync(m =>
m.name == login.Username && m.password == encryptedPassword);
// return failure if logUser is null
这是 using async/await,它将同步执行您的代码,但在执行数据库查询时不会阻塞线程。
另一方面,如果您使用SingleOrDefault(),那么您将在数据库操作期间阻塞线程,这不是一个好习惯。
- 1 回答
- 0 关注
- 60 浏览
添加回答
举报
0/150
提交
取消