Пример #1
0
        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)
            }));
        }
Пример #2
0
        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 = "登录错误,系统异常,请联系管理员!"
                }));
            }
        }