public ActionResult WeChatLogin(string code) { var apiResponseModel = new APIResponseModel(); if (string.IsNullOrWhiteSpace(code)) { apiResponseModel.errorcode = "-1"; apiResponseModel.errormsg = "临时登录凭证不能为空"; return(Json(apiResponseModel)); } try { var weChatApi = new WeChatAPI(); var result = weChatApi.Authorization(code); var authModel = JsonUtil.Deserialize <AuthResponseModel>(result); if (string.IsNullOrWhiteSpace(authModel.openid)) { apiResponseModel.errorcode = "-1"; apiResponseModel.errormsg = "错误"; apiResponseModel.data = authModel; return(Json(apiResponseModel)); } var customer = _customerService.GetCustomerByOpenId(authModel.openid); if (customer == null) { customer = new Customer() { OpenId = authModel.openid, CreatedOnUtc = DateTime.Now, LastLoginDateUtc = DateTime.Now, LastActivityDateUtc = DateTime.Now }; _customerService.InsertCustomer(customer); } var token = Guid.NewGuid().ToString(); if (_cacheService.IsSet(token)) { _cacheService.Remove(token); } _cacheService.Set(token, customer, 60); apiResponseModel.errorcode = "0"; apiResponseModel.errormsg = "登录成功"; apiResponseModel.data = token; return(Json(apiResponseModel)); } catch (Exception e) { apiResponseModel.errorcode = "11"; apiResponseModel.errormsg = e.Message; apiResponseModel.data = null; return(Json(apiResponseModel)); } }
public void ProcessRequest(HttpContext context) { try { context.Response.ContentType = "text/plain"; var echostr = context.Request.QueryString["echostr"]; var r = context.Request.QueryString["r"]; var code = context.Request.QueryString["code"]; var method = context.Request.QueryString["m"]; var json = JSON.StreamToJson(context.Request.InputStream, Encoding.UTF8); var data = new { Url = context.Request.Url, Data = json }; var path = string.Format("{0}/{1}", context.Server.MapPath("~"), "input"); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } System.IO.File.WriteAllText(string.Format("{0}/{1}.txt", path, DateTime.Now.ToString("yyyyMMddhhmmss")), JSON.ToJson(data), Encoding.UTF8); if (!string.IsNullOrWhiteSpace(echostr)) { context.Response.Write(echostr); return; } else if (!string.IsNullOrWhiteSpace(code)) { context.Response.Write(WeChatAPI.GetInstance().GetTokenByCode(code)); return; } else { var inst = WeChatAPI.GetInstance(); var res = inst.GetType().GetMethod(method).Invoke(inst, null); context.Response.Write(res); return; } } catch (Exception ex) { var json = JSON.ToJson(context.Request.InputStream); var data = new { Url = context.Request.Url, Data = json }; var path = string.Format("{0}/{1}", context.Server.MapPath("~"), "input"); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } System.IO.File.WriteAllText(path, ex.Message); context.Response.Write("OK"); context.Response.Write(ex.Message); } }
public ActionResult Login(string code) { ViewBag.OpenID = WeChatAPI.GetOpenID(code); return(View()); }
public override void OnAuthorization(AuthorizationContext filterContext) { if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)) { return; } var user = (SysUser)filterContext.HttpContext.Session["user"]; if (user == null) { string code = filterContext.HttpContext.Request["code"]; if (string.IsNullOrEmpty(code) && isPc) { filterContext.Result = new RedirectResult("/Home/Login"); } else { var request = filterContext.HttpContext.Request; SysUserBLL handle = new SysUserBLL(); int environmentMode = ConvertHelper.ToInt32(ConfigurationManager.AppSettings["EnvironmentMode"]); string openID = ConvertHelper.ToString(request.QueryString["OpenID"]); if (!string.IsNullOrEmpty(openID) && environmentMode == (int)EnvironmentMode.Development) // 开发模式 { user = handle.DetailByOpenID(openID); } else { string openId = WeChatAPI.GetOpenID(code); if (string.IsNullOrEmpty(openId)) { string toUrl = FileHelper.GetFilePath("/Home/Index"); string url = @"https://open.weixin.qq.com/connect/oauth2/authorize?appid={1}&redirect_uri={0}&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect"; string redirectUrl = string.Format(url, toUrl, ConfigurationManager.AppSettings["AppKey"]); filterContext.Result = new RedirectResult(redirectUrl); } else { user = handle.DetailByOpenID(openId); } } if (user != null) { if (!string.IsNullOrEmpty(operateCode) && !AuthenHelper.HasAuth(operateCode)) { filterContext.Result = new RedirectResult("/Home/NoRole"); } else { filterContext.HttpContext.Session["user"] = user; filterContext.HttpContext.Session.Timeout = 30; } } } } else { if (!string.IsNullOrEmpty(operateCode) && !AuthenHelper.HasAuth(operateCode)) { filterContext.Result = new RedirectResult("/Home/NoAuth"); } else { filterContext.HttpContext.Session["user"] = user; filterContext.HttpContext.Session.Timeout = 30; } filterContext.HttpContext.Session.Timeout = 30; } }