public IActionResult Token([FromBody] LoginViewModel model) { var findUser = _tb_user.FindByClause(t => t.username == model.UserName && t.password == model.Password); if (findUser == null) { return(Json(new { code = JsonReturnMsg.FailCode, msg = "用户名或密码错误!" })); } //验证码 var validateCode = string.Empty; var headers = HttpContext.Request.Headers; if (headers.TryGetValue("validateKey", out var headerValues)) { validateCode = headerValues.First(); } using (RedisClient redisClient = RedisHelper.CreateClient()) { var cacheValidateCode = redisClient.Get <string>(validateCode); if (cacheValidateCode != null) { if (!String.Equals(model.ValidateCode.Trim(), cacheValidateCode.Trim(), StringComparison.CurrentCultureIgnoreCase)) { return(Json(new { code = JsonReturnMsg.FailCode, msg = "验证码输入错误!" })); } } } var claim = new[] { new Claim(ClaimTypes.Name, model.UserName), new Claim(ClaimTypes.Role, "admin") }; //对称秘钥 var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSettings.SecretKey)); //签名证书(秘钥,加密算法) var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //生成token [注意]需要nuget添加Microsoft.AspNetCore.Authentication.JwtBearer包,并引用System.IdentityModel.Tokens.Jwt命名空间 var token = new JwtSecurityToken(_jwtSettings.Issuer, _jwtSettings.Audience, claim, DateTime.Now, DateTime.Now.AddMinutes(30), creds); //return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }); return(Json(new { code = JsonReturnMsg.SuccessCode, msg = JsonReturnMsg.GetSuccess, token = new JwtSecurityTokenHandler().WriteToken(token) })); }
public JsonResult CheckLogin([FromBody] LoginViewModel model) { try { var findUser = _tb_user.FindByClause(t => t.username == model.UserName && t.password == model.Password); if (findUser == null) { return(Json(new { code = JsonReturnMsg.FailCode, msg = "用户名或密码错误!" })); } var token = string.Empty; var headers = HttpContext.Request.Headers; if (headers.TryGetValue("validateKey", out var headerValues)) { token = headerValues.First(); } using (RedisClient redisClient = RedisHelper.CreateClient()) { var cacheValidateCode = redisClient.Get <string>(token); if (cacheValidateCode != null) { if (String.Equals(model.ValidateCode.Trim(), cacheValidateCode.Trim(), StringComparison.CurrentCultureIgnoreCase)) { return(Json(new { code = JsonReturnMsg.SuccessCode, msg = JsonReturnMsg.GetSuccess })); } return(Json(new { code = JsonReturnMsg.FailCode, msg = "验证码输入错误!" })); } return(Json(new { code = JsonReturnMsg.FailCode, msg = "验证码已过期,请重新刷新!" })); } } catch (Exception ex) { Log.Error("错误:" + ex); return(Json(new { code = JsonReturnMsg.FailCode, msg = "登录错误,系统异常,请联系管理员!" })); } }