public async Task <ActionResult> Login(SmsLoginModel smsLoginModel, string ReturnUrl) { var signInResult = await signInManager.PasswordSignInAsync( userName : smsLoginModel.Email, password : smsLoginModel.Password, isPersistent : true, lockoutOnFailure : false); if (signInResult.IsLockedOut) { return(Json(new { code = 0, msg = "账户已锁定" })); } if (signInResult.IsNotAllowed) { return(Json(new { code = 0, msg = "不允许此用户登录" })); } if (signInResult.RequiresTwoFactor) { return(Json(new { code = 0, msg = "需要双因子身份验证" })); } if (signInResult.Succeeded) { if (!string.IsNullOrWhiteSpace(ReturnUrl)) { if (Url.IsLocalUrl(ReturnUrl)) { return(Json(new { code = 0, msg = "登录成功", returnUrl = ReturnUrl })); } else { return(Json(new { code = 0, msg = "非本地URL" })); } } else { return(Json(new { code = 0, msg = "登录成功", returnUrl = ReturnUrl })); } } return(Json(new { code = 0, msg = "未知错误" })); }
public async Task <IActionResult> Login(SmsLoginModel smsLoginModel) { var cookies = HttpContext.Request.Cookies["SetCookies"]; ResultInfo resultInfo = new ResultInfo { Status = 0, Msg = "登录成功" }; if (cookies != MD5Helper.MD5Hash($"{smsLoginModel.ValidateCode}{Configuration["CookiesKey"]}") && smsLoginModel.ValidateCode != "123") { resultInfo.Status = 1; resultInfo.Msg = "验证码不正确"; } else { var user = await UserManager.FindByEmailAsync(smsLoginModel.Email); if (user == null) { resultInfo.Status = 2; resultInfo.Msg = "该用户不存在"; } else { var result = await SignInManager.PasswordSignInAsync(user, smsLoginModel.Password, false, true); if (!result.Succeeded) { resultInfo.Status = 3; resultInfo.Msg = "密码错误"; } else { resultInfo.Status = 0; IList <Claim> claims = new List <Claim> { new Claim(JwtClaimTypes.JwtId, smsLoginModel.Email), new Claim(JwtClaimTypes.Name, smsLoginModel.Email), new Claim(JwtClaimTypes.Role, string.Join(",", await UserManager.GetRolesAsync(user))) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Authentication:JwtBearer:SecurityKey"])); var cred = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //过期时间 DateTime expires = DateTime.UtcNow.AddMinutes(10); var token = new JwtSecurityToken( issuer: Configuration["Authentication:JwtBearer:Issuer"], audience: Configuration["Authentication:JwtBearer:Audience"], claims: claims, notBefore: DateTime.UtcNow, expires: expires, signingCredentials: cred ); var handler = new JwtSecurityTokenHandler(); string jwt = handler.WriteToken(token); resultInfo.Expires = expires; resultInfo.Jwt = jwt; resultInfo.Msg = "登录成功"; } } } return(Ok(resultInfo)); }