public override void OnAuthorization(HttpActionContext actionContext) { //try //{ // if (HttpContext.Current != null && SessionHelper["UserInfo"] == null) // { // var obj = new ReturnMessage { success = false, message = "not authed." }; // var json = JsonHelper.Serialize(obj); // HttpContext.Current.Response.Write(json); // actionContext.Response = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK }; // } //} //catch (Exception ex) //{ //} if (IsTestMode() && SessionHelper["UserInfo"] == null) { var ubll = new Wx.BLL.UserBLL(); SessionHelper["UserInfo"] = ubll.FromDbUser(ubll.TestUser); } if (HttpContext.Current != null && SessionHelper["UserInfo"] == null) { base.OnAuthorization(actionContext); } }
private string LogInvite(string eventKey, string fromUserName, string eventType) { //http://domain/lol/coin/pay string welcome = $@"感谢关注小菠![亲亲] 这里有一大波LOLer&Dotaer在跟小菠一起玩竞猜,变土豪! 同时,小菠还为你准备了好多大礼包哦~ 1.首次登录即送88金币[愉快]<a href=""http://domain/lol/"">【戳我立即领金币】</a> 2.首次充值即可获得“首充大礼包”[礼物]<a href=""http://domain/lol/coin/pay"">【戳我马上领取】</a> 3.如果你想介绍新朋友给小菠,小菠就把自己的绝世宝箱送给你[害羞]<a href=""http://domain/lol/"">【戳我打开绝世宝箱】</a> 偷偷告诉你: 每天小菠都会送你30-70金币哦[嘘]"; welcome = $@"感谢关注小菠![亲亲] 这里有一大波LOLer&Dotaer在跟小菠一起玩竞猜,变土豪! 同时,小菠还为你准备了好多大礼包哦~ 1.首次登录即送88金币[愉快] 2.首次充值即可获得“首充大礼包”[礼物] 3.如果你想介绍新朋友给小菠,小菠就把自己的绝世宝箱送给你[害羞] 偷偷告诉你: 每天小菠都会送你30-70金币哦[嘘]"; var content = eventKey; if (!string.IsNullOrWhiteSpace(eventKey)) { var enviteType = eventKey[0].ToString(); switch (enviteType) { case "u": var ubll = new Wx.BLL.UserBLL(); var inviteByUserId = int.Parse(eventKey.Replace("u=", "")); ubll.SaveInviteLog(fromUserName, inviteByUserId, eventType); var inviteByUser = ubll.GetUser(inviteByUserId); var inviteUserName = inviteByUser == null ? "unknown" : inviteByUser.name; if (inviteByUser.openId == fromUserName) { content = $"请将二维码发送给好友或分享至朋友圈。"; } else { content += $"您的推荐人是[{inviteUserName}]。"; } break; case "c": var cbll = new Wx.BLL.ChannelBLL(); var inviteByChannelId = int.Parse(eventKey.Replace("c=", "")); cbll.SaveInviteLog(fromUserName, inviteByChannelId, eventType); var inviteByChannel = cbll.GetChannel(inviteByChannelId); var inviteChannelName = inviteByChannel == null ? "unknown" : inviteByChannel.name; content += $"您来自推广渠道:[{inviteChannelName}]。"; break; } } return(welcome); }
public override IResponseMessageBase OnEvent_UnsubscribeRequest(RequestMessageEvent_Unsubscribe requestMessage) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "取消关注"; var ubll = new Wx.BLL.UserBLL(); var openId = requestMessage.FromUserName; ubll.Unsubscribe(openId); return(responseMessage); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { var actionFilter = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AllowAnonymousAttribute), false); if (!actionFilter.Any()) { //filterContext.Controller.ControllerContext.HttpContext.Response.Write("FLL"); var Request = HttpContext.Current.Request; var Response = HttpContext.Current.Response; var Session = HttpContext.Current.Session; if (IsTestMode() && SessionHelper["UserInfo"] == null) { var ubll = new Wx.BLL.UserBLL(); SessionHelper["UserInfo"] = ubll.FromDbUser(ubll.TestUser); } else if (SessionHelper["UserInfo"] == null) { var redirect = Request.Url.ToString();//.Replace(Request.Url.Authority, ConfigurationManager.AppSettings["UserInfoCallbackDomain"]); var callback = "http://" + ConfigurationManager.AppSettings["UserInfoCallbackDomain"] + "/oauth2/UserInfoCallback/?redirect=" + HttpContext.Current.Server.UrlEncode(redirect); //callback += "&inviteUid=" + uid; var authUrl = OAuthApi.GetAuthorizeUrl(appId, callback, "JeffreySu", OAuthScope.snsapi_userinfo); //Response.Write(string.Format("<a href={0}>{1}</a>", authUrl, HttpContext.Current.Server.UrlDecode(authUrl))); //System.Threading.Thread.Sleep(200); var redirectCount = int.Parse((Session["RedirectCount"] ?? 0).ToString()); if (redirectCount > 20) { System.IO.File.AppendAllLines(@"D:\\log.txt", new string[] { string.Format("auth rd:{0}", Request.QueryString["redirect"]) }); Response.Write("Reach Max Redirect Count!"); return; } Session["RedirectCount"] = redirectCount + 1; Response.Redirect(authUrl); //Response.Write(authUrl); return; } Session["RedirectCount"] = 0; } ; base.OnActionExecuting(filterContext); }
public ActionResult Login(FormCollection form) { var userId = int.Parse(Request.Form["username"]); var password = Request.Form["password"]; if (password == "admin++") { var user = new Wx.BLL.UserBLL().GetUser(userId); if (user == null) { return(View()); } Session["UserInfo"] = new UserInfo { header = user.header, openId = user.openId, userId = user.userId, name = user.name }; Response.Redirect("~/"); return(null); } return(View()); }
public ActionResult UserInfoCallback(string code, string state, int inviteUid = 0) { if (string.IsNullOrEmpty(code)) { return(Content("您拒绝了授权!")); } if (state != "JeffreySu") { //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下 //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证 return(Content("验证失败!请从正规途径进入!")); } OAuthAccessTokenResult result = null; //通过,用code换取access_token try { result = OAuthApi.GetAccessToken(appId, secret, code); } catch (Exception ex) { return(Content(ex.Message)); } if (result.errcode != ReturnCode.请求成功) { return(Content("错误:" + result.errmsg)); } //下面2个数据也可以自己封装成一个类,储存在数据库中(建议结合缓存) //如果可以确保安全,可以将access_token存入用户的cookie中,每一个人的access_token是不一样的 Session["OAuthAccessTokenStartTime"] = DateTime.Now; Session["OAuthAccessToken"] = result; //因为第一步选择的是OAuthScope.snsapi_userinfo,这里可以进一步获取用户详细信息 try { OAuthUserInfo oAuthUserInfo = OAuthApi.GetUserInfo(result.access_token, result.openid); //userInfo.nickname += ": invite by" + inviteUid; //Session["OAuthUserInfo"] = userInfo; var ubll = new Wx.BLL.UserBLL(); var userInfo = ubll.SaveOAuthUser(oAuthUserInfo.AsDictionary()); Session["UserInfo"] = userInfo; HttpRuntime.Cache["UserInfo"] = userInfo; if (userInfo == null) { return(Content("保存用户失败!")); } //HttpRuntime.Cache["OAuthUserInfo"] = userInfo; var sh = new Wx.Common.Helpers.SessionHelper(); if (Request.QueryString["redirect"] != null && sh["UserInfo"] != null) { Response.Redirect(Request.QueryString["redirect"]); //System.IO.File.AppendAllLines(@"D:\\log.txt", new string[] { string.Format("callback rd:{0}", Request.QueryString["redirect"]) }); } return(Content(oAuthUserInfo.nickname + "<br />" + oAuthUserInfo.headimgurl)); } catch (ErrorJsonResultException ex) { return(Content(ex.Message)); } }