/// <summary> /// 获取配置文件(Wbm.OAuthV2.config)的oauth子节点 /// </summary> /// <returns></returns> public static List <OAuthEntity> GetConfigOAuths() { string xpath = CONFIG_ROOT + CONFIG_OAUTH; XmlNode oauth_node = XmlConfig.SelectSingleNode(xpath); List <OAuthEntity> list = new List <OAuthEntity>(); if (oauth_node != null) { foreach (XmlNode item in oauth_node.ChildNodes) { if (item.NodeType == XmlNodeType.Element) { OAuthEntity oauth = new OAuthEntity(); oauth.name = item.Name; if (item.Attributes["show"] != null) { bool show = bool.TryParse(item.Attributes["show"].Value, out show) ? show : false; if (show == false) { //如果设置不显示则跳过 continue; } } if (item.Attributes["desc"] != null) { oauth.desc = item.Attributes["desc"].Value; } list.Add(oauth); } } } return(list); }
/// <summary> /// 创建oauthEntity /// </summary> /// <param name="userName"></param> /// <param name="password"></param> /// <returns></returns> private OAuthEntity CreateOAuthEntity(string userName, string password) { var access_Token = tokenCreateStrategy.CreateAccessToken(); var refresn_Token = tokenCreateStrategy.createRefreshToken(); var oauthEntity = new OAuthEntity(access_Token, refresn_Token, 43199, userName, password); return(oauthEntity); }
protected void Page_Load(object sender, EventArgs e) { string openId = Request.Form["openid"].ToString(); string accessToken = Request.Form["accesstoken"].ToString(); string oAuthFrom = Request.Form["oauthfrom"].ToString(); int userId = Int32.Parse(Request.Form["userid"].ToString()); OAuthEntity oAuth = new OAuthEntity(); oAuth.OpenID = openId; oAuth.AccessToken = accessToken; oAuth.User = UserAccess.GetUserById(userId); oAuth.OAuthFrom = oAuthFrom; oAuth.OAuthBound = 1; string result = "{"; bool success = false; int bound = OAuthAccess.CheckOAuthBoundByOpenId(oAuth.OpenID); if (bound == 2) { success = SyncHelper.SyncInsertOAuth(oAuth); if (success) { result += "\"result\":\"1\""; } else { result += "\"result\":\"0\""; } } else if (bound == 0) { oAuth.OAuthBound = 1; success = SyncHelper.SyncUpdateOAuth(oAuth); if (success) { result += "\"result\":\"1\""; } else { result += "\"result\":\"0\""; } } else { result += "\"result\":\"2\""; } result += "}"; Response.Write(result); Response.End(); }
public bool SaveRefreshToken(string refeshToken, OAuthEntity oauthEntity) { try { return(redisClient.Set <OAuthEntity>(refeshToken, oauthEntity)); } catch (Exception e) { return(false); } }
public bool SaveAccessToken(string accessToken, OAuthEntity oauthEntity) { try { //12h return(redisClient.Set <OAuthEntity>(accessToken, oauthEntity, TimeSpan.FromHours(12))); } catch (Exception e) { return(false); } }
public bool SaveUserName_OAuthEntity(string userName, OAuthEntity oauthEntity) { try { //12h return(redisClient.Set <OAuthEntity>(userName, oauthEntity, TimeSpan.FromHours(12))); } catch (Exception e) { return(false); } }
//同步授权登录// public static bool SyncInsertOAuth(OAuthEntity oAuth) { DbCommand comm = GenericDataAccess.CreateCommand(); comm.CommandText = "SyncInsertOAuth_v4"; DbParameter param = comm.CreateParameter(); param.ParameterName = "@UserID"; param.Value = oAuth.User.UserID; param.DbType = DbType.Int32; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OpenID"; param.Value = oAuth.OpenID; param.DbType = DbType.String; param.Size = 100; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@AccessToken"; param.Value = oAuth.AccessToken; param.DbType = DbType.String; param.Size = 100; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OAuthFrom"; param.Value = oAuth.OAuthFrom; param.DbType = DbType.String; param.Size = 10; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OAuthBound"; param.Value = oAuth.OAuthBound; param.DbType = DbType.Int32; comm.Parameters.Add(param); int result = -1; try { result = GenericDataAccess.ExecuteNonQuery(comm); } catch { } return(result != -1); }
protected void BindData() { string u = Request.QueryString["u"]; UserEntity user = new UserEntity(); user.UserName = u + Utility.GetRandomNumber(10000, 99999); user.UserPassword = "******"; user.UserNickName = Request.QueryString["name"] ?? ""; user.UserImage = Request.QueryString["image"] == "" ? "none.gif" : Request.QueryString["image"]; user.UserEmail = ""; user.UserPhone = ""; user.UserTheme = "main"; user.UserFrom = u; user.UserCity = ""; OAuthEntity oAuth = new OAuthEntity(); oAuth.OpenID = Request.QueryString["openId"]; oAuth.AccessToken = Request.QueryString["accessToken"]; oAuth.User = user; oAuth.OAuthFrom = u; oAuth.OAuthBound = 0; bool success = OAuthAccess.CheckOAuthLogin(oAuth.OpenID); if (!success) { success = OAuthAccess.InsertOAuth(oAuth); if (!success) { Response.Write("自动登录错误!"); Response.End(); } } DataTable dt = OAuthAccess.GetOAuthByOpenId(oAuth.OpenID); int userId = Int32.Parse(dt.Rows[0]["UserID"].ToString()); UserLogin(userId); Response.Redirect("/Default.aspx"); }
/// <summary> /// Init /// </summary> /// <param name="e"></param> protected override void OnInit(EventArgs e) { base.OnInit(e); #region //如果在微信浏览器中才走下面的微信步骤 if (Request.UserAgent.ToLower().Contains("micromessenger")) { string openId = WeChatVerifyHelper.GetUserOpenIdCookie(); string wechat = HYRequest.GetStringByParams("wechat"); //Oauth验证链接 if (string.IsNullOrEmpty(openId) && string.IsNullOrEmpty(wechat)) { string redirect_url = HttpContext.Current.Request.Url.AbsoluteUri; if (redirect_url.Contains("?")) { redirect_url = redirect_url + "&wechat=1"; } else { redirect_url = redirect_url + "?wechat=1"; } string url = string.Format(@"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + PayConfig.AppId + "&redirect_uri=" + HttpContext.Current.Server.UrlEncode(redirect_url) + "&response_type=code&scope=snsapi_base&state=123#wechat_redirect"); HttpContext.Current.Response.Redirect(url); } //用户Oauth验证 if (string.IsNullOrEmpty(openId) && !string.IsNullOrEmpty(wechat)) { string oauth_code = HYRequest.GetStringByParams("code"); OAuthEntity entity = SeniorService.UserOAuthInfo(PayConfig.AppId, PayConfig.AppSecret, oauth_code); if (entity.result) { openId = entity.openid; WeChatVerifyHelper.AddUserOpenIdCookie(openId); } } Log.WriteLog("OpenId", openId); } #endregion }
protected void Page_Load(object sender, EventArgs e) { string openId = Request.Form["openid"].ToString(); string accessToken = Request.Form["accesstoken"].ToString(); string oAuthFrom = Request.Form["oauthfrom"].ToString(); string nickName = Request.Form["nickname"].ToString(); string userImage = Request.Form["userimage"].ToString(); int type = Int32.Parse(Request.Form["type"].ToString()); string userFrom = ""; if (oAuthFrom.Length > 4) { userFrom = oAuthFrom.Replace("_", ""); userFrom = userFrom.Insert(4, "_"); oAuthFrom = userFrom.Substring(0, 4); } else { userFrom = oAuthFrom; } UserEntity user = new UserEntity(); user.UserName = oAuthFrom + Utility.GetRandomNumber(10000, 99999); user.UserPassword = "******"; user.UserNickName = nickName; user.UserImage = (userImage=="" ? "none.gif" : userImage); user.UserEmail = ""; user.UserPhone = ""; user.UserTheme = "main"; user.UserFrom = userFrom; user.UserCity = ""; OAuthEntity oAuth = new OAuthEntity(); oAuth.OpenID = openId; oAuth.AccessToken = accessToken; oAuth.User = user; oAuth.OAuthFrom = oAuthFrom; oAuth.OAuthBound = 1; bool success = OAuthAccess.CheckOAuthLogin(oAuth.OpenID); if (!success) { success = OAuthAccess.InsertOAuth(oAuth); if (!success) { Response.Write("{\"result\":\"userid\":\"0\"}"); Response.End(); } } DataTable odt = OAuthAccess.GetOAuthByOpenId(oAuth.OpenID); int userId = Int32.Parse(odt.Rows[0]["UserID"].ToString()); string result = "{"; if (success) { user = UserAccess.GetUserById(userId); result += "\"userid\":\"" + userId + "\","; result += "\"username\":\"" + user.UserName + "\","; result += "\"userpass\":\"" + user.UserPassword + "\","; result += "\"usernickname\":\"" + user.UserNickName + "\","; result += "\"useremail\":\"" + user.UserEmail + "\","; result += "\"userphone\":\"" + user.UserPhone + "\","; result += "\"userimage\":\"" + user.UserImage + "\","; result += "\"userworkday\":\"" + user.UserWorkDay + "\","; result += "\"usermoney\":\"" + user.UserMoney + "\","; DataTable dt = null; if (type == 1) { dt = SyncHelper.SyncGetItemListWebFirst(userId); } else { dt = SyncHelper.SyncGetItemListWeb(userId); } if (dt.Rows.Count > 0) { result += "\"hassync\":\"1\","; } else { result += "\"hassync\":\"0\","; } result += "\"userbound\":\"1\""; } else { result += "\"userid\":\"0\","; result += "\"username\":\"\","; result += "\"userpass\":\"\","; result += "\"usernickname\":\"\","; result += "\"useremail\":\"\","; result += "\"userphone\":\"\","; result += "\"userimage\":\"\","; result += "\"userworkday\":\"\","; result += "\"usermoney\":\"0\","; result += "\"categoryrate\":\"0\","; result += "\"hassync\":\"0\","; result += "\"userbound\":\"0\""; } result += "}"; Response.Write(result); Response.End(); }
protected void Page_Load(object sender, EventArgs e) { string openId = Request.Form["openid"].ToString(); string accessToken = Request.Form["accesstoken"].ToString(); string oAuthFrom = Request.Form["oauthfrom"].ToString(); string nickName = Request.Form["nickname"].ToString(); string userImage = Request.Form["userimage"].ToString(); int type = Int32.Parse(Request.Form["type"].ToString()); string userFrom = ""; if (oAuthFrom.Length > 4) { userFrom = oAuthFrom.Replace("_", ""); userFrom = userFrom.Insert(4, "_"); oAuthFrom = userFrom.Substring(0, 4); } else { userFrom = oAuthFrom; } UserEntity user = new UserEntity(); user.UserName = oAuthFrom + Utility.GetRandomNumber(10000, 99999); user.UserPassword = "******"; user.UserNickName = nickName; user.UserImage = (userImage == "" ? "none.gif" : userImage); user.UserEmail = ""; user.UserPhone = ""; user.UserTheme = "main"; user.UserFrom = userFrom; user.UserCity = ""; OAuthEntity oAuth = new OAuthEntity(); oAuth.OpenID = openId; oAuth.AccessToken = accessToken; oAuth.User = user; oAuth.OAuthFrom = oAuthFrom; oAuth.OAuthBound = 1; bool success = OAuthAccess.CheckOAuthLogin(oAuth.OpenID); if (!success) { success = OAuthAccess.InsertOAuth(oAuth); if (!success) { Response.Write("{\"result\":\"userid\":\"0\"}"); Response.End(); } } DataTable odt = OAuthAccess.GetOAuthByOpenId(oAuth.OpenID); int userId = Int32.Parse(odt.Rows[0]["UserID"].ToString()); string result = "{"; if (success) { user = UserAccess.GetUserById(userId); result += "\"userid\":\"" + userId + "\","; result += "\"username\":\"" + user.UserName + "\","; result += "\"userpass\":\"" + user.UserPassword + "\","; result += "\"usernickname\":\"" + user.UserNickName + "\","; result += "\"useremail\":\"" + user.UserEmail + "\","; result += "\"userphone\":\"" + user.UserPhone + "\","; result += "\"userimage\":\"" + user.UserImage + "\","; result += "\"userworkday\":\"" + user.UserWorkDay + "\","; result += "\"usermoney\":\"" + user.UserMoney + "\","; DataTable dt = null; if (type == 1) { dt = SyncHelper.SyncGetItemListWebFirst(userId); } else { dt = SyncHelper.SyncGetItemListWeb(userId); } if (dt.Rows.Count > 0) { result += "\"hassync\":\"1\","; } else { result += "\"hassync\":\"0\","; } result += "\"userbound\":\"1\""; } else { result += "\"userid\":\"0\","; result += "\"username\":\"\","; result += "\"userpass\":\"\","; result += "\"usernickname\":\"\","; result += "\"useremail\":\"\","; result += "\"userphone\":\"\","; result += "\"userimage\":\"\","; result += "\"userworkday\":\"\","; result += "\"usermoney\":\"0\","; result += "\"categoryrate\":\"0\","; result += "\"hassync\":\"0\","; result += "\"userbound\":\"0\""; } result += "}"; Response.Write(result); Response.End(); }
/// <summary> /// 保存oauthEntity /// </summary> /// <param name="oauthEntity"></param> private void SaveToStore(OAuthEntity oauthEntity) { tokenService.SaveUserName_OAuthEntity(oauthEntity.UserName, oauthEntity); tokenService.SaveAccessToken(oauthEntity.Access_Token, oauthEntity); tokenService.SaveRefreshToken(oauthEntity.Refresh_Token, oauthEntity); }
/// <summary> /// 服务器中移除oauthEntity /// </summary> /// <param name="refeshToken"></param> /// <param name="oauthEntity"></param> private void RemoveOauthFromStore(string refeshToken, OAuthEntity oauthEntity) { tokenService.RemoveRefreshToken(refeshToken); tokenService.ReomveAccessToken(oauthEntity.Access_Token); tokenService.ReomveUserName_OAuthEntity(oauthEntity.UserName); }
//修改同步授权登录// public static bool SyncUpdateOAuth(OAuthEntity oAuth) { DbCommand comm = GenericDataAccess.CreateCommand(); comm.CommandText = "SyncUpdateOAuth_v4"; DbParameter param = comm.CreateParameter(); param.ParameterName = "@UserID"; param.Value = oAuth.User.UserID; param.DbType = DbType.Int32; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OpenID"; param.Value = oAuth.OpenID; param.DbType = DbType.String; param.Size = 100; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OAuthBound"; param.Value = oAuth.OAuthBound; param.DbType = DbType.Int32; comm.Parameters.Add(param); int result = -1; try { result = GenericDataAccess.ExecuteNonQuery(comm); } catch { } return (result != -1); }
//注册授权登录新用户// public static bool InsertOAuth(OAuthEntity oAuth) { DbCommand comm = GenericDataAccess.CreateCommand(); comm.CommandText = "InsertOAuth_v4"; DbParameter param = comm.CreateParameter(); param.ParameterName = "@UserName"; param.Value = oAuth.User.UserName; param.DbType = DbType.String; param.Size = 20; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@UserPassword"; param.Value = oAuth.User.UserPassword; param.DbType = DbType.String; param.Size = 20; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@UserNickName"; param.Value = oAuth.User.UserNickName; param.DbType = DbType.String; param.Size = 50; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@UserImage"; param.Value = oAuth.User.UserImage; param.DbType = DbType.String; param.Size = 200; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@UserTheme"; param.Value = oAuth.User.UserTheme; param.DbType = DbType.String; param.Size = 10; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@UserFrom"; param.Value = oAuth.User.UserFrom; param.DbType = DbType.String; param.Size = 10; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OpenID"; param.Value = oAuth.OpenID; param.DbType = DbType.String; param.Size = 100; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@AccessToken"; param.Value = oAuth.AccessToken; param.DbType = DbType.String; param.Size = 100; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OAuthFrom"; param.Value = oAuth.OAuthFrom; param.DbType = DbType.String; param.Size = 10; comm.Parameters.Add(param); param = comm.CreateParameter(); param.ParameterName = "@OAuthBound"; param.Value = oAuth.OAuthBound; param.DbType = DbType.Int32; comm.Parameters.Add(param); int result = -1; try { result = GenericDataAccess.ExecuteNonQuery(comm); } catch { } return (result != -1); }