public IActionResult CheckLogin([FromBody] LoginParam param) { try { string username = param.Username ?? throwStringAssert("用户名不能为空"); string password = param.Password ?? throwStringAssert("密码不能为空"); string code = param.Code ?? throwStringAssert("验证码不能为空"); var vcodeSession = Request.Cookies["vcode-session"]; if (string.IsNullOrEmpty(vcodeSession)) { return(Json(new { success = false, message = "验证码已失效" })); } var state = verifyCodeService.VerifyCode(vcodeSession, code); switch (state) { case VerifyCodeService.State.WrongCode: return(Json(new { success = false, message = "验证码错误" })); case VerifyCodeService.State.Expired: return(Json(new { success = false, message = "验证码已过期" })); case VerifyCodeService.State.Invalid: return(Json(new { success = false, message = "验证信息错误" })); } UserEntity userEntity = userService.CheckPassword(username, password); var orgs = userOrganizeService.IQueryable().Where(it => it.User.Id == userEntity.Id).ToList(); var roles = roleService .IQueryable().ToList(); var myroles = roles .Where(it => orgs.Any(org => it.OrganizeCategoryId == org.Organize.CategoryId && it.OrganizeDutyLevel == org.DutyLevel)) .ToList(); var permissions = new HashSet <string>(); foreach (var roleEntity in myroles) { var menus = roleEntity.AvailableMenus.Split(",", StringSplitOptions.RemoveEmptyEntries); foreach (var menu in menus) { permissions.Add(menu); } } logger.WriteDbLog(DbLogType.Login.ToString(), true, "登录成功"); return(Json(new { success = true, data = LoginExtension.CreateJwtToken(userEntity, permissions.ToArray()) })); } catch (Exception ex) { var msg = "登录失败," + ex.Message; logger.WriteDbLog(DbLogType.Login.ToString(), false, msg); return(Json(new { success = false, message = msg })); } }