Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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));
            }
        }