public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context) { Shop_sys_user user = new Shop_sys_user(); //获取用户 try { if (_redisCacheManager.Get <object>("Redis.sysuser") != null) { user = _redisCacheManager.Get <Shop_sys_user>("Redis.sysuser"); } else { user = await _userServices.GetSysUserByLoginNameAsync(context.UserName); _redisCacheManager.Set("Redis.sysuser", user, TimeSpan.FromHours(10)); } } catch (Exception e) { _redisCacheManager.Set("Redis.sysuser", user, TimeSpan.FromHours(10)); } if (user != null) { if (user.uStatus == 0) { context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "您已被禁止登陆,请与工作人员联系!"); return; } var _pass = $"{context.Password}{user.passkey}"; var _md5passkey = MD5Helper.MD5Encrypt32(_pass); if (_md5passkey.Equals(user.passValue)) { context.Result = new GrantValidationResult( subject: context.UserName, authenticationMethod: "custom", claims: new Claim[] { new Claim("uid", user.uid + ""), new Claim(JwtClaimTypes.Name, user.loginName), new Claim(JwtClaimTypes.GivenName, user.realName), new Claim(JwtClaimTypes.FamilyName, user.nickName), new Claim(JwtClaimTypes.Email, string.IsNullOrWhiteSpace(user.Email)?"":user.Email), new Claim(JwtClaimTypes.Role, "user") }); return; } else { context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "密码不正确!"); return; } } else { //验证失败 context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "不存在该用户名!"); return; } }
public async Task <JsonResult <bool> > RegisterShopMall([FromBody] RegisterParameterModel obj) { var result = new JsonResult <bool>() { ret = 0, Success = true }; #region 参数校验 if (string.IsNullOrWhiteSpace(obj.loginName) || string.IsNullOrWhiteSpace(obj.code) || string.IsNullOrWhiteSpace(obj.passWord) || string.IsNullOrWhiteSpace(obj.repass)) { result.ret = 1; result.Result = "请填写完整信息!"; result.Content = false; return(result); } if (obj.loginName.Length >= 20) { result.ret = 1; result.Result = "用户名太长!"; result.Content = false; return(result); } if (!obj.passWord.Equals(obj.repass) && obj.repass.Length >= 20) { result.ret = 1; result.Result = "输入的密码不一致,或密码过长!"; result.Content = false; return(result); } #endregion var isAny = await _userServices.IsAny(t => t.loginName == obj.loginName); if (isAny) { result.ret = 1; result.Result = "已存在该用户名!"; result.Content = false; return(result); } var codeAny = await _CodeServices.QueryByLately(t => t.code == obj.code && t.codeType == 1 && t.state == 0); if (codeAny == null || !Utils.CompanyDate(codeAny.creatTime.AddMinutes(codeAny.effectMinutes), DateTime.Now).Equals(">")) { result.ret = 1; result.Result = "验证码不存在或已失效!"; result.Content = false; return(result); } var passkey = RandomHelper.GetRandomString(6, true, true, true, true, ""); var passvalue = MD5Helper.MD5Encrypt32($"{obj.repass}{passkey}"); Shop_sys_user _user = new Shop_sys_user() { birthday = DateTime.Now, creatTime = DateTime.Now, Email = obj.loginName, LastLogin = DateTime.Now, loginName = obj.loginName, headPortrait = "", LoginNum = 0, Mobile = "", nickName = obj.loginName, passkey = passkey, passValue = passvalue, qq_code = "", realName = obj.loginName, regRemarks = "", sex = 1, uStatus = 1, wx_openid = "", }; var uid = await _userServices.Add(_user); if (uid != 0) { //插入 await _User_LogServices.AddUserLogAsync(uid, 2, $"{obj.loginName}注册用户", obj.source, true); await _CodeServices.updateCodeStatus(obj.code, codeAny.toName); result.ret = 0; result.Result = "注册成功!"; result.Content = true; } else { result.ret = 3; result.Result = "系统繁忙,稍后再试!"; result.Content = false; } return(result); }