/// <summary> /// 完善手机 /// </summary> /// <param name="mobile"></param> /// <param name="code"></param> /// <returns></returns> public ActionResult PostMobile(string mobile, string code) { if (!MyRegex.IsPhone(mobile)) { return(JsonResult(APIErrCode.PhoneFormatError, "手机格式错误")); } var authenticationUser = BLLAuthentication.GetAuthenticationUser(); var obj = new XCache().Get("Code" + authenticationUser.openid);//写入缓存 if (obj == null) { return(JsonResult(APIErrCode.CheckCodeErr, "验证码已过期")); } if (obj.ToString().ToUpper() != code.Trim().ToUpper()) { return(JsonResult(APIErrCode.CheckCodeErr, "验证码错误")); } ht_user user = BLLUser.GetUserByOpenid(authenticationUser.openid); if (user == null) { user = new ht_user(); user.addtime = DateTime.Now; user.username = user.openid; user.openid = authenticationUser.openid; user.salt = Utils.GetSalt(); user.password = EncryptUtil.DesEncrypt("123456", user.salt); user.points = 0; user.money = 0; if (authenticationUser.parent_id.HasValue) { user.parent_id = authenticationUser.parent_id; ht_user parentUser = BLLUser.GetUserById(authenticationUser.parent_id.Value); if (parentUser != null && parentUser.parent_id.HasValue) { user.pparent_id = parentUser.parent_id; } } } user.mobile = mobile; user.avatar = authenticationUser.avatar; user.nickname = authenticationUser.nickname; if (BLLUser.PostUser(user) > 0) { BLLAuthentication.LoginAuthenticationTicket(user); return(JsonResult(APIErrCode.Success, "提交成功")); } return(JsonResult(APIErrCode.CheckCodeErr, "提交失败")); }
// GET: WX public ActionResult OAuthCallback() { string code = Request["code"]; string appId = Request["appid"]; //授权给开放平台时返回此参数 默认授权无此参数 string state = Request["state"]; //state 原样返回 string pageUrl = HttpUtility.UrlDecode(state); string appSecret = ""; string getAccessTokenUrl = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appId, appSecret, code); string accessTokenSource = RequestUtil.Get(getAccessTokenUrl); WXOAuthAccessToken accessTokenModel = JsonConvert.DeserializeObject <WXOAuthAccessToken>(accessTokenSource); ht_user user = BLLUser.GetUserByOpenid(accessTokenModel.openid); if (user != null) { BLLAuthentication.LoginAuthenticationTicket(user); return(Redirect(pageUrl)); } else { user = new ht_user(); user.addtime = DateTime.Now; user.parent_id = 0; user.points = 0; user.money = 0; user.issubscribe = 0; user.salt = Utils.GetCheckCode(6); //获得6位的salt加密字符串 user.password = EncryptUtil.DesEncrypt("123456", user.salt); } string wxUserInfoSourceJson = RequestUtil.Get(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}", accessTokenModel.access_token, accessTokenModel.openid )); WeixinUserInfo wxUserInfo = JsonConvert.DeserializeObject <WeixinUserInfo>(wxUserInfoSourceJson); user.username = user.openid; user.openid = wxUserInfo.openid; user.nickname = wxUserInfo.nickname; user.avatar = wxUserInfo.headimgurl; if (BLLUser.AddUser(user) > 0) { BLLAuthentication.LoginAuthenticationTicket(user); } return(Redirect(pageUrl)); }
/// <summary> /// 用户授权回调 /// </summary> /// <returns></returns> public ActionResult OAuthCallback() { string code = Request["code"]; string appId = Request["appid"]; //授权给开放平台时返回此参数 默认授权无此参数 string state = Request["state"]; //state 原样返回 string pageUrl = HttpUtility.UrlDecode(state); string appSecret = ""; string getAccessTokenUrl = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appId, appSecret, code); string accessTokenSource = RequestUtil.Get(getAccessTokenUrl); WXOAuthAccessToken accessTokenModel = JsonConvert.DeserializeObject <WXOAuthAccessToken>(accessTokenSource); ht_user user = BLLUser.GetUserByOpenid(accessTokenModel.openid); if (user != null) { BLLAuthentication.LoginAuthenticationTicket(user); return(Redirect(pageUrl)); } string wxUserInfoSourceJson = RequestUtil.Get(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}", accessTokenModel.access_token, accessTokenModel.openid )); WeixinUserInfo wxUserInfo = JsonConvert.DeserializeObject <WeixinUserInfo>(wxUserInfoSourceJson); user = new ht_user(); user.nickname = wxUserInfo.nickname; user.avatar = wxUserInfo.headimgurl; user.username = accessTokenModel.openid; user.openid = accessTokenModel.openid; string prms = pageUrl.Substring(pageUrl.IndexOf("?") + 1); var qList = HttpUtility.ParseQueryString(prms); var pid = qList.Get("pid"); if (pid != null) { user.parent_id = Convert.ToInt32(pid); } BLLAuthentication.LoginAuthenticationTicket(user); return(Redirect(pageUrl)); }
/// <summary> /// 模拟登陆 /// </summary> /// <returns></returns> public ActionResult TestLogin(string username, string password) { if (Request.IsAjaxRequest()) { var user = BLLUser.GetUserByUsername(username); if (user == null) { return(JsonResult(APIErrCode.IsNotFound, "账号未找到")); } if (user.password != Utility.EncryptUtil.DesEncrypt(password, user.salt)) { return(JsonResult(APIErrCode.PasswordFail, "密码错误")); } BLLAuthentication.LoginAuthenticationTicket(user); return(JsonResult(APIErrCode.Success, "登陆成功")); } return(View()); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.HttpContext.Request.IsAuthenticated) { ht_user user = BLLUser.GetUserById(1); BLLAuthentication.LoginAuthenticationTicket(user); return; string currentUrl = filterContext.HttpContext.Request.Url.PathAndQuery.ToString(); //当前地址和条件 string callBackUrl = filterContext.HttpContext.Request.Url.Scheme + "://" + filterContext.HttpContext.Request.Url.Authority + "/WX/OAuthCallback"; //当前绝对地址 var oauthUrl = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state={3}#wechat_redirect", BLLConfig.Get("wx_appid"), callBackUrl, "snsapi_userinfo", HttpUtility.UrlEncode(currentUrl) ); //访问授权链接 filterContext.HttpContext.Response.Redirect(oauthUrl); } }