public async Task <IHttpActionResult> ResetPassword01_CheckUserName(string username) { JsonResult <string> result = new JsonResult <string>(); result.code = 0; result.msg = "OK"; if (username.IsNull()) { result.Result = "用户名不能为空"; return(Ok(result)); } result.Result = await Task.Run <string>(() => { string tel = string.Empty; UserInfoBll ubll = new UserInfoBll(); UserInfo userinfo = ubll.GetByUserName(username); if (userinfo != null) { result.code = 1; result.msg = "OK"; if (!string.IsNullOrEmpty(userinfo.Telephone) && userinfo.Telephone.IsMobile()) { tel = string.Format("{0}*****{1}", userinfo.Telephone.Substring(0, 3), userinfo.Telephone.Substring(8)); string cachekey = cookieKey(); RedisBase.Item_Set(cachekey, userinfo.Telephone); RedisBase.ExpireEntryAt(cachekey, DateTime.Now.AddMinutes(10)); result.ResultMsg = cachekey; return(tel); } } return(tel); }); return(Ok(result)); }
/// <summary> /// 获取微信公共号的Access_token /// </summary> /// <returns></returns> public static string GetWeChatAccess_token() { string access_token = string.Empty; string key = getaccess_tokenKey(); if (RedisBase.ContainsKey(key)) { access_token = RedisBase.Item_Get <string>(key); } else { string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", SystemSet.Serviceappid, SystemSet.Serviceappsecret); string resultJson = HttpUtils.Ins.GET(url); if (!resultJson.IsNull()) { if (resultJson.Contains("errcode")) { //WeChatErrorResult errorResult = JsonHelper.DeserializeObject<WeChatErrorResult>(resultJson); ClassLoger.Fail("WeChatAPIHelper.GetWeChatAccess_token", url); ClassLoger.Fail("WeChatAPIHelper.GetWeChatAccess_token", resultJson); } else { Dictionary <string, object> resDic = JsonHelper.DeserializeObject(resultJson); access_token = resDic["access_token"].TryToString(); int expires_in = resDic["expires_in"].TryToInt(100); RedisBase.Item_Set <string>(key, access_token); RedisBase.ExpireEntryAt(key, DateTime.Now.AddSeconds(expires_in)); } } } return(access_token); }
public override void CreateUninitializedItem(HttpContext context, string id, int timeout) { RedisSessionState state = new RedisSessionState(null, null, timeout); RedisBase.Item_Set <string>(id, state.ToJson()); RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(timeout.TryToDouble())); }
/// <summary> /// 刷新当前用户信息【修改用户信息后刷新用户信息到缓存中】 /// </summary> public void RefreshUser() { string key = GetKey(); if (RedisBase.ContainsKey(key)) { RedisBase.Item_Set(key, User); } }
public void UpdateWeChatUser(WeChatUser user) { WeChatUserDal.Ins.UpdateWeChatUser(user); string key = getGetWeChatUserByUnionIDKey(user.UnionID); if (RedisBase.ContainsKey(key)) { RedisBase.Item_Remove(key); } RedisBase.Item_Set(key, user); }
/// <summary> /// 用户登录返回令牌 /// </summary> /// <param name="user"></param> /// <returns></returns> public string GetUserToken(UserInfo user) { string uagin = actionContext.Request.Headers.UserAgent.TryToString().MD5(); string rm = Utils.GenPsw(11, 11); long time = Utils.GetUnixTime(); string code = string.Format("{0}-{1}-{2}-{3}", user.ID, uagin, rm, time); string token = EncryptUtil.Base64(code); string key = (user.ID + uagin + time).MD5(); RedisBase.Item_Set(key, user); RedisBase.ExpireEntryAt(key, DateTime.Now.AddDays(2)); return(token); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { Models.RedisSession <UserInfo> redisSession = new Models.RedisSession <UserInfo>(filterContext.HttpContext, true, 120); if (!redisSession.IsExistKey("UserCode")) { string Key = filterContext.HttpContext.Request.RawUrl.MD5(); if (!RedisBase.ContainsKey(Key)) { RedisBase.Item_Set(Key, filterContext.HttpContext.Request.RawUrl); } filterContext.Result = new RedirectResult(WeChateSiteHelper.getOauthURL(Key)); } }
public static void TestRedis() { // 基本KEY/VALUE键值对操作; RedisBase.Item_Set("examCourseId", "00889750EE7448DB9B388E9146E5AC62"); RedisBase.Item_Set("batchId", "89B0BD4B5CAC49259E60E1D8A6EDD858"); var examCourseId = RedisBase.Item_Get <string>("examCourseId"); var batchId = RedisBase.Item_Get <string>("batchId"); Console.WriteLine("examCourseId:" + examCourseId); Console.WriteLine("batchId:" + batchId); // 存储对象; RedisBase.Item_Set <UserInfo>("userinfo", new UserInfo() { UserName = "******", Age = 45 }); var userinfo = RedisBase.Item_Get <UserInfo>("userinfo"); var id = userinfo.Id; var userName = userinfo.UserName; var age = userinfo.Age; Console.WriteLine("userinfo:" + userinfo); Console.WriteLine("id:" + id + ",userName:" + userName + ",age:" + age); // List; RedisBase.List_Add("userinfolist", new UserInfo() { Id = 1, UserName = "******", Age = 36 }); RedisBase.List_Add("userinfolist", new UserInfo() { Id = 2, UserName = "******", Age = 30 }); var userList = RedisBase.List_GetList <UserInfo>("userinfolist"); foreach (var user in userList) { Console.WriteLine("id:" + user.Id + ",userName:" + user.UserName + ",age:" + user.Age); } RedisBase.Item_Remove("examCourseId"); Console.Read(); }
public async Task <IHttpActionResult> VerCodePic() { JsonResult <VerCodePicViewModel> result = new JsonResult <VerCodePicViewModel>(); result.code = 1; result.msg = "OK"; await Task.Run(() => { try { ClassLoger.Info("VerCodePic", "开始获取成语"); cy_dictBll cybll = new cy_dictBll(); IList <cy_dict> cylist = cybll.GetAllcy_dict(); ClassLoger.Info("VerCodePic", cylist.Count.ToString()); int i = Utils.GetRandom(0, cylist.Count - 1); ClassLoger.Info("VerCodePic", i.ToString()); cy_dict cy = cylist[i]; ClassLoger.Info("VerCodePic成语:", cy.chengyu); VerCodePicViewModel vcvm = new VerCodePicViewModel(); string sourcePic = FileHelper.GetVerCodePicResource(); if (sourcePic.IsNull() || !File.Exists(sourcePic)) { sourcePic = @"E:\WebResources\images\VerCodePicSource\1.jpg"; } ClassLoger.Info("VerCodePic图片", sourcePic); VerCodePic codepic = FileHelper.GetVerCodePic(cy.chengyu, sourcePic); vcvm.content = cy.chengyu; vcvm.MainPic = codepic.PicURL; result.Result = vcvm; string key = cookieKey(); RedisBase.Item_Set(key, codepic); RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10)); result.ResultMsg = key; } catch (Exception ex) { ClassLoger.Error("AccountController.VerCodePic", ex); result.code = -1; result.msg = "AccountController.VerCodePic发生异常:" + ex.Message; } }); return(Ok(result)); }
public UserInfo GetUserinfoByID(string userid) { string key = getuserkey(userid); if (RedisBase.ContainsKey(key)) { return(RedisBase.Item_Get <UserInfo>(key)); } else { UserInfo uinfo = UserInfoDal.Ins.GetUserinfoByID(userid); if (uinfo != null) { RedisBase.Item_Set(key, uinfo); } return(uinfo); } }
public WeChatUser GetWeChatUserByUnionID(string UnionID) { string key = getGetWeChatUserByUnionIDKey(UnionID); if (RedisBase.ContainsKey(key)) { return(RedisBase.Item_Get <WeChatUser>(key)); } else { WeChatUser wuser = WeChatUserDal.Ins.GetWeChatUserByUnionID(UnionID); if (wuser != null) { RedisBase.Item_Set(key, wuser); } return(wuser); } }
public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem) { ISessionStateItemCollection sessionItems = null; HttpStaticObjectsCollection staticObjects = null; if (item.Items.Count > 0) { sessionItems = item.Items; } if (!item.StaticObjects.NeverAccessed) { staticObjects = item.StaticObjects; } RedisSessionState state2 = new RedisSessionState(sessionItems, staticObjects, item.Timeout); RedisBase.Item_Set(id, state2.ToJson()); RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(item.Timeout.TryToDouble())); }
public string AddWeChatUser(WeChatUser user) { if (user == null) { return(string.Empty); } string id = WeChatUserDal.Ins.AddWeChatUser(user); user.ID = id; string key = getGetWeChatUserByUnionIDKey(user.UnionID); if (RedisBase.ContainsKey(key)) { RedisBase.Item_Remove(key); } RedisBase.Item_Set(key, user); return(id); }
public string UpdateUserinfo(UserInfo _userinfo) { string id = UserInfoDal.Ins.UpdateUserinfo(_userinfo); if (!string.IsNullOrEmpty(id)) { string key = getuserkey(id); if (RedisBase.ContainsKey(key)) { RedisBase.Item_Remove(key); } string openkey = getuseropenkey(_userinfo.Openid); if (RedisBase.ContainsKey(openkey)) { RedisBase.Item_Remove(openkey); } RedisBase.Item_Set(key, _userinfo); RedisBase.Item_Set(openkey, _userinfo); } return(id); }
public UserInfo GetUserInfoByOpenID(string OpenID) { if (string.IsNullOrEmpty(OpenID)) { return(null); } string key = getuseropenkey(OpenID); if (RedisBase.ContainsKey(key)) { return(RedisBase.Item_Get <UserInfo>(key)); } else { UserInfo uinfo = UserInfoDal.Ins.GetUserInfoByOpenID(OpenID); if (uinfo != null) { RedisBase.Item_Set(key, uinfo); } return(uinfo); } }
public async Task <IHttpActionResult> SendSmS(string tel) { JsonResult <string> result = new JsonResult <string>(); result.code = 1; result.msg = "OK"; if (tel.IsNull()) { result.code = 0; result.msg = "手机号不能为空"; return(Ok(result)); } if (!tel.IsMobile()) { result.code = 0; result.msg = "请输入正确的手机号"; return(Ok(result)); } //产生短信验证码 int code = Utils.GetRandom(100000, 999999); string key = cookieKey(); RedisBase.Item_Set(key, code.TryToString()); RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10)); bool isSend = Utils.SendSMSVCode(code.TryToString(), tel); if (isSend) { result.Result = key; } else { result.code = 0; result.msg = "发送失败"; } return(Ok(result)); }
public string RegisterUserInfo(UserInfo _userinfo) { string id = string.Empty; if (_userinfo.BirthDate == DateTime.MinValue || _userinfo.BirthDate == DateTime.MaxValue) { _userinfo.BirthDate = new DateTime(1990, 1, 1); } UserInfo _user = GetUserInfoByOpenID(_userinfo.Openid); if (_user != null) { id = _user.ID; _user.UserName = _userinfo.UserName; _user.Name = _userinfo.Name; _user.Password = _userinfo.Password; _user.BirthDate = _userinfo.BirthDate; _user.IsAdmin = _userinfo.IsAdmin; _user.Sex = _userinfo.Sex; UserInfoDal.Ins.UpdateUserinfo(_user); } else { id = UserInfoDal.Ins.AddUserInfo(_userinfo); } if (!string.IsNullOrEmpty(id)) { UserInfoDal.Ins.RegisterPassword(_userinfo.UserName, _userinfo.Password); string key = getuserkey(id); _userinfo.Password = string.Empty; RedisBase.Item_Set(key, _userinfo); string openkey = getuseropenkey(_userinfo.Openid); RedisBase.Item_Set(openkey, _userinfo); } return(id); }
/// <summary> /// 获取微信公共号jssdk调用接口临时凭证 /// </summary> /// <returns></returns> public static string Getjsapi_ticket() { string key = Getjsapi_ticketKey(); if (RedisBase.ContainsKey(key)) { return(RedisBase.Item_Get <string>(key)); } else { string ticket = string.Empty; string Access_token = GetWeChatAccess_token(); string url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", Access_token); string resultJson = HttpUtils.Ins.GET(url); Dictionary <string, object> resDic = JsonHelper.DeserializeObject(resultJson); if (resDic["errcode"].TryToInt(0) == 0) { ticket = resDic["ticket"].TryToString(); RedisBase.Item_Set(key, ticket); RedisBase.ExpireEntryAt(key, DateTime.Now.AddSeconds(resDic["expires_in"].TryToInt(7200))); } return(ticket); } }
public async Task <IHttpActionResult> BindingWeChartCQ() { JsonResult <string> result = new JsonResult <string>(); result.code = 0; result.msg = "OK"; await Task.Run(() => { string uuid = Utils.GetWeChatUUID(); string long_url = WeChateSiteHelper.getCRContent(uuid); string cqContent = WeChatAccessTokenAPI.GetShortURL(long_url); if (string.IsNullOrEmpty(cqContent)) { cqContent = long_url; } string fileName = string.Format("{0}.png", uuid); string filePath = FileHelper.GetPicFilePath(fileName); if (QrCodeHelper.CreateImgCode(cqContent, filePath)) { result.code = 1; result.Result = FileHelper.GetPicFileURL(fileName); result.ResultMsg = uuid; //图片记录进缓存,定期清理 string key = CacheKey.GetQrCodeKey(DateTime.Now); RedisBase.List_Add <string>(key, filePath); RedisBase.List_SetExpire(key, DateTime.Now.AddDays(2)); ApiUserManager userManager = new ApiUserManager(ActionContext); string bindkey = string.Format("bind_{0}", uuid); RedisBase.Item_Set(bindkey, userManager.User); RedisBase.ExpireEntryAt(bindkey, DateTime.Now.AddHours(1)); } }); return(Ok(result)); }
public ActionResult CallBackRedirect() { //网络授权有有效期,最好用redis缓存 //获取用户网络授权 string code = Request["code"].TryToString(); string state = Request["state"].TryToString(); ClassLoger.Info("WeixinRedirectController.CallBackRedirect", state, code); string access_token = string.Empty; string openid = string.Empty; if (RedisBase.ContainsKey(code)) { Access_tokenResult accResult = RedisBase.Item_Get <Access_tokenResult>(code); access_token = accResult.access_token; openid = accResult.openid; } else { Access_tokenResult accResult = WeChatAccessTokenAPI.GetWeChatServiceAccess_token(code); RedisBase.Item_Set(code, accResult); RedisBase.ExpireEntryAt(code, DateTime.Now.AddSeconds(accResult.expires_in)); access_token = accResult.access_token; openid = accResult.openid; } //获取用户信息 WeChatUserInfo userinfo = null; string userkey = getWeChatUserKey(access_token, openid); if (RedisBase.ContainsKey(userkey)) { userinfo = RedisBase.Item_Get <WeChatUserInfo>(userkey); } else { userinfo = WeChatUserInfoAPI.GetWeChatUserInfo(access_token, openid); if (userinfo != null) { RedisBase.Item_Set(userkey, userinfo); RedisBase.ExpireEntryAt(userkey, DateTime.Now.AddDays(2)); } } UserInfo _user = userbll.GetUserInfoByOpenID(userinfo.unionid); if (_user == null) { _user = new UserInfo(); _user.Openid = userinfo.unionid; _user.CreateTime = DateTime.Now; _user.Headimgurl = userinfo.headimgurl; _user.Nickname = userinfo.nickname; _user.Sex = (SexEnum)userinfo.sex; _user.Name = userinfo.nickname; _user.city = userinfo.city; _user.province = userinfo.province; userbll.UpdateUserinfo(_user); } ClassLoger.Info("CallBackRedirect", userkey); RedisSession <UserInfo> redissession = new Models.RedisSession <UserInfo>(HttpContext, true, 120); redissession["UserCode"] = _user; switch (state) { //普通用户个人中心 case "UserCore": return(RedirectToAction("Index", "UserCore")); case "AdminCore": //return RedirectToAction("Index", "AdminCore"); default: string url = HttpUtils.Ins.UrlDecode(state); if (RedisBase.ContainsKey(state)) { url = RedisBase.Item_Get <string>(state); } return(Redirect(url)); } }
public async Task <IHttpActionResult> SendSmSCode([FromBody] SendSMSCodeViewModel sendSmsCode) { JsonResult <string> result = new JsonResult <string>(); result.code = 1; result.msg = "OK"; if (sendSmsCode == null) { result.code = 0; result.msg = "参数错误"; return(Ok(result)); } string requestTimeskey = "AccountController.SendSmSCode"; double times = RedisBase.SortedSet_ZSCORE <string>(requestTimeskey, sendSmsCode.token); //if (times > 0) //{ // result.code = 0; // result.msg = "验证码已失效"; // return Ok(result); //} if (string.IsNullOrEmpty(sendSmsCode.token) || !RedisBase.ContainsKey(sendSmsCode.token)) { result.code = 0; result.msg = "验证码已过期"; return(Ok(result)); } if (sendSmsCode.type == 0 && !sendSmsCode.tel.IsMobile()) { result.code = 0; result.msg = "invalid tel"; return(Ok(result)); } await Task.Run(() => { RedisBase.SortedSet_Zincrby <string>(requestTimeskey, sendSmsCode.token, 1); RedisBase.SortedSet_SetExpire(requestTimeskey, DateTime.Now.AddMinutes(10)); VerCodePic codepic = RedisBase.Item_Get <VerCodePic>(sendSmsCode.token); if (Math.Abs(codepic.Font1.X - sendSmsCode.x1) > 0.5 || Math.Abs(codepic.Font1.Y - sendSmsCode.y1) > 0.5 || Math.Abs(codepic.Font2.X - sendSmsCode.x2) > 0.5 || Math.Abs(codepic.Font2.Y - sendSmsCode.y2) > 0.5 || Math.Abs(codepic.Font3.X - sendSmsCode.x3) > 0.5 || Math.Abs(codepic.Font3.Y - sendSmsCode.y3) > 0.5 || Math.Abs(codepic.Font4.X - sendSmsCode.x4) > 0.5 || Math.Abs(codepic.Font4.Y - sendSmsCode.y4) > 0.5) { result.code = 0; result.msg = "验证码错误"; } else { //产生短信验证码 int code = Utils.GetRandom(100000, 999999); string key = cookieKey(); RedisBase.Item_Set(key, code.TryToString()); RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10)); string tel = sendSmsCode.tel; if (sendSmsCode.type == 1) { tel = RedisBase.Item_Get <string>(sendSmsCode.tel); } bool isSend = Utils.SendSMSVCode(code.TryToString(), tel); if (isSend) { result.Result = key; } else { result.code = 0; result.msg = "发送失败"; } } }); return(Ok(result)); }
/// <summary> /// 用户确认授权 /// </summary> /// <param name="code"></param> /// <param name="state"></param> private void getUserinfo(string code, string state) { try { //网络授权有有效期,最好用redis缓存 //获取用户网络授权 string access_token = string.Empty; string openid = string.Empty; if (RedisBase.ContainsKey(code)) { Access_tokenResult accResult = RedisBase.Item_Get <Access_tokenResult>(code); access_token = accResult.access_token; openid = accResult.openid; } else { Access_tokenResult accResult = WeChatAccessTokenAPI.GetWeChatAccess_token(code); RedisBase.Item_Set(code, accResult); RedisBase.ExpireEntryAt(code, DateTime.Now.AddSeconds(accResult.expires_in)); access_token = accResult.access_token; openid = accResult.openid; } //获取用户信息 WeChatUserInfo userinfo = null; string userkey = getWeChatUserKey(access_token, openid); if (RedisBase.ContainsKey(userkey)) { userinfo = RedisBase.Item_Get <WeChatUserInfo>(userkey); } else { userinfo = WeChatUserInfoAPI.GetWeChatUserInfo(access_token, openid); if (userinfo != null) { RedisBase.Item_Set(userkey, userinfo); RedisBase.ExpireEntryAt(userkey, DateTime.Now.AddDays(2)); } } WeChatUser wuser = userbll.GetWeChatUserByUnionID(userinfo.unionid); if (wuser == null) { wuser = new WeChatUser(); wuser.PlatformOpenID = userinfo.openid; wuser.UnionID = userinfo.unionid; userbll.AddWeChatUser(wuser); } else { if (string.IsNullOrEmpty(wuser.PlatformOpenID)) { wuser.PlatformOpenID = userinfo.openid; wuser.UnionID = userinfo.unionid; userbll.UpdateWeChatUser(wuser); } } UserInfoBll ubll = new UserInfoBll(); UserInfo _user = ubll.GetUserInfoByOpenID(userinfo.unionid); // 用户绑定微信 string bindkey = string.Format("bind_{0}", state); string msg = MqttAgreement.GetWeChatLoginMA(state, true); if (RedisBase.ContainsKey(bindkey)) { //用户之前已经关注过微信公共号,需要把之前微信公共号账户中的信息更新到这个账户中 if (_user != null) { _user.Openid = ""; ubll.UpdateUserinfo(_user); } UserInfo binduser = RedisBase.Item_Get <UserInfo>(bindkey); binduser.Openid = userinfo.unionid; ubll.UpdateUserinfo(binduser); } else { WeChatLogin login = loginbll.GetWeChatLoginByUUID(state); if (login == null) { login = new WeChatLogin(); login.UUID = state; login.CreateTime = DateTime.Now; login.LoginData = DateTime.Now.ToString("yyyy-MM-dd"); } login.Headimgurl = userinfo.headimgurl; login.Nickname = userinfo.nickname; login.Openid = userinfo.unionid; login.Sex = userinfo.sex.TryToString(); login.State = 1; login.LoginData = DateTime.Now.ToString("yyyy-MM-dd"); login.CreateTime = DateTime.Now; loginbll.UpdateWeChatLogin(login); if (_user == null) { _user = new UserInfo(); _user.Openid = userinfo.unionid; _user.CreateTime = DateTime.Now; _user.Headimgurl = userinfo.headimgurl; _user.Nickname = userinfo.nickname; _user.Sex = (SexEnum)userinfo.sex; _user.Name = userinfo.nickname; _user.city = userinfo.city; _user.province = userinfo.province; ubll.UpdateUserinfo(_user); } //向客户端推送消息 MqttPublishClient.Ins.PublishOneClient(login.LockCode, msg); } MqttPublishClient.Ins.PublishAllClient(msg); } catch (Exception ex) { ClassLoger.Error("WeChatLoginCallBackController.getUserinfo", ex); } }