public ActionResult Identify(string code) { if (string.IsNullOrEmpty(code)) { return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } WxIdentifyDto dto = HttpContext.Session.GetObjectFromJson <WxIdentifyDto>("WxIdentify"); if (dto == null) { LoginViewModel vm = new LoginViewModel() { ReturnUrl = AbsoluteUri() }; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); vm.WorkerCn = userInfo.UserId; vm.DeviceId = userInfo.DeviceId; } catch { Logger.Error("微信授权错误"); } return(View("login", vm)); } else { return(View("TaskList", dto)); } }
public ActionResult Login(string returnUrl, string code) { if (returnUrl == null) { return(null); } // 根据 returnUrl 得到 AppName, 然后得到_secret和_agentId string appName = _appDict[GetActionOfUrl(returnUrl)]; _secret = _appConfiguration[string.Format("SenparcWeixinSetting:{0}:Secret", appName)]; _agentId = _appConfiguration[string.Format("SenparcWeixinSetting:{0}:AgentId", appName)]; if (string.IsNullOrEmpty(code)) { // 备案 return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } var vm = new LoginViewModel() { ReturnUrl = returnUrl }; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); vm.WorkerCn = userInfo.UserId; vm.DeviceId = userInfo.DeviceId; } catch { Logger.Error("微信登录错误"); } return(View(vm)); }
private void printUserInfo(LoginResult lr, String authEP) { try { GetUserInfoResult userInfo = lr.userInfo; form1.updateTextBox4("\nLogging in ...\n"); form1.updateTextBox4("Logged in to SalesForce.com as:"); form1.appendTextBox5("UserID: " + userInfo.userId); form1.appendTextBox5("User Full Name: " + userInfo.userFullName); form1.appendTextBox5("User Email: " + userInfo.userEmail); form1.appendTextBox5("SessionID: " + lr.sessionId); form1.appendTextBox5("Auth End Point: " + authEP); form1.appendTextBox5("Service End Point: " + lr.serverUrl); } catch (SoapException e) { form1.updateTextBox4("An unexpected error has occurred: " + e.Message + " Stack trace: " + e.StackTrace); } }
private void printUserInfo(LoginResult lr, String authEP) { try { GetUserInfoResult userInfo = lr.userInfo; Console.WriteLine("\nLogging in ...\n"); Console.WriteLine("UserID: " + userInfo.userId); Console.WriteLine("User Full Name: " + userInfo.userFullName); Console.WriteLine("User Email: " + userInfo.userEmail); Console.WriteLine(); Console.WriteLine("SessionID: " + lr.sessionId); Console.WriteLine("Auth End Point: " + authEP); Console.WriteLine("Service End Point: " + lr.serverUrl); Console.WriteLine(); } catch (SoapException e) { Console.WriteLine("An unexpected error has occurred: " + e.Message + " Stack trace: " + e.StackTrace); } }
private void showUserInfo(LoginResult lr, String authEP) { try { GetUserInfoResult userInfo = lr.userInfo; String userId = userInfo.userId; String userFullName = userInfo.userFullName; String userEmail = userInfo.userEmail; String serverUrl = lr.serverUrl; String userInfoText = $@"UserID: {userId} User Full Name: {userFullName} User Email: {userEmail} Auth End Point: {authEP} Service End Point: {serverUrl} "; MessageBox.Show(userInfoText, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception e) { MessageBox.Show(e.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public string GetUserDataByCode(string strCode, string strModelCode) { string UserCode = ""; strModelCode = strModelCode.Split('_')[0]; try { if (Qyinfo.IsUseWX == "Y") { JH_Auth_Model Model = new JH_Auth_ModelB().GetEntities(d => d.ModelCode == strModelCode).FirstOrDefault(); if (Model != null) { GetUserInfoResult OBJ = OAuth2Api.GetUserId(GetToken(Model.AppID), strCode); UserCode = OBJ.UserId; } } } catch (Exception EX) { new JH_Auth_LogB().Insert(new JH_Auth_Log() { CRDate = DateTime.Now, LogContent = strModelCode + "获取用户代码" + strCode + "|GetUserDataByCode" + EX.Message.ToString() }); } return(UserCode); }
public ActionResult Oil(string code) { if (string.IsNullOrEmpty(code)) { return(Redirect(OAuth2Api.GetCode(_corpId, AbsoluteUri(), "STATE", _agentId))); } string workerCn = null; try { var accessToken = AccessTokenContainer.GetToken(_corpId, _secret); GetUserInfoResult userInfo = OAuth2Api.GetUserId(accessToken, code); workerCn = userInfo.UserId; } catch { Logger.Error("微信授权错误"); } if (workerCn == null) { return(Content("系统取不到你的微信标识号")); } //workerCn = "90005"; var worker = WorkManager.GetWorkerByCn(workerCn); if (!worker.WorkRoleNames.Contains("司机")) { return(Content("需要司机角色")); } var depot = WorkManager.GetDepot(worker.DepotId); var vm = new OilViewModel(); vm.WorkerId = worker.Id; foreach (var v in _vehicleCache.GetList().FindAll(x => x.DepotId == depot.Id)) { vm.Vehicles.Add(new ComboItemModel() { Id = v.Id, Name = v.Cn + v.License }); } foreach (var v in _gasStationCache.GetList().FindAll(x => string.IsNullOrEmpty(x.DepotList) || x.DepotList.Contains(depot.Name))) { vm.GasStations.Add(new ComboItemModel() { Id = v.Id, Name = v.Name }); } foreach (var t in _oilTypeCache.GetList()) { vm.OilTypes.Add(new ComboItemModel() { Id = t.Id, Name = t.Name }); } return(View(vm)); }
/// <summary> /// Gets the user info. /// </summary> /// <returns>User Info.</returns> public GetUserInfoResult GetUserInfo() { GetUserInfoResult result = null; if (CheckConnected()) { result = _binding.getUserInfo(); } return(result); }
private Salesforce.Helpers.sForceService.SforceService sfLogin(String sfUserID, String sfUserPwd) { bool reqlogin = true; System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; Salesforce.Helpers.sForceService.SforceService binding; // Create a service object if needed if (_binding == null) { binding = new SforceService(); reqlogin = true; } else { reqlogin = false; binding = _binding; try { GetUserInfoResult result = binding.getUserInfo(); } catch (SoapException uef) { // if (uef.ExceptionCode == ExceptionCode.INVALID_SESSION_ID) { reqlogin = true; } } } if (reqlogin) { LoginResult lr; lr = binding.login(sfUserID, sfUserPwd); /** * The login results contain the endpoint of the virtual server instance * that is servicing your organization. Set the URL of the binding * to this endpoint. */ // Save old authentication end point URL String authEndPoint = binding.Url; // Set returned service endpoint URL binding.Url = lr.serverUrl; /** Get the session ID from the login result and set it for the * session header that will be used for all subsequent calls. */ binding.SessionHeaderValue = new SessionHeader(); binding.SessionHeaderValue.sessionId = lr.sessionId; _binding = binding; } return(binding); }
public ActionResult Callback() { var access_token = ""; var code = ""; try { code = Request.QueryString.Get("code"); if (string.IsNullOrEmpty(code))//没有code表示授权失败 { return(Content("请从正规途径进入")); } var state = Request.QueryString.Get("state"); var cache_status = System.Web.HttpContext.Current.Cache.Get(state); var redirect_url = cache_status == null ? "/" : cache_status.ToString();//没有获取到state,就跳转到首页 var scope = WeixinConfig.OauthScope; access_token = WeixinConfig.TokenHelper.GetToken();//基础支持中的access_token GetUserInfoResult UserInfo = OAuth2Api.GetUserId(access_token, code); string userId = UserInfo.UserId; string user_ticket = UserInfo.user_ticket; GetUserDetailResult userDetail = OAuth2Api.GetUserDetail(access_token, user_ticket); string userName = userDetail.name; AuthorizationManager.SetTicket(false, 1, userId, userName); Thread.Sleep(500);//暂停半秒钟,以等待IOS设置Cookies的延迟 LogWriter.Default.WriteInfo(string.Format("OAuth success: identity: {0} , name: {1} , redirect_rul:{2} ", code, userId, redirect_url)); EmployeeInfo employeeInfo = ms.EmployeeInfo.Find(userId); if (employeeInfo == null) { string insStr = "INSERT INTO EmployeeInfo ([EmployeeNo],[EmployeeName],[EmployeePhone]) " + "VALUES ('" + userId + "',N'" + userDetail.name + "','" + userDetail.mobile + "');"; BaseClass.OperateData(insStr); } else { string updStr = "UPDATE EmployeeInfo SET EmployeeName =N'" + userDetail.name + "',EmployeePhone= '" + userDetail.mobile + "' WHERE EmployeeNo = '" + userId + "'"; BaseClass.OperateData(updStr); } return(new RedirectResult(redirect_url, true)); } catch (Exception ex) { return(Content(ex.Message)); } }
public ActionResult WeixinQYHSignIn2(string code) { try { string userid = ""; string corpId = "wwa26d4508575b5fe9"; string secret = "cwcclxDJ0GMIlxsn2U_3kWQUPoiDupZOZMrKFqDDcnI"; if (string.IsNullOrEmpty(code)) { return(Json(new { code = 1, Msg = "参数错误" })); } WebClient wcl = new WebClient(); string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", corpId, secret); string json = wcl.DownloadString(url); JObject token = JObject.Parse(json.Replace("\\", ""));//可用属性请查看官方接入文档(access_token,expires_in,refresh_token,openid,scope,errcode,errmsg) if ((int)token["errcode"] != 0) { return(Json(new { Code = 1, Msg = "获取信息失败" })); } var access_token = (string)token["access_token"]; GetUserInfoResult result = OAuth2Api.GetUserId(access_token, code); if (result.errcode.ToString() == "请求成功") { userid = result.UserId; } else { return(Json(new { Code = 1, Msg = "获取信息失败:" + result.errmsg })); } SysUser user = dbContext.Set <SysUser>().Where(x => x.UserCode == userid).FirstOrDefault(); if (user == null) { return(Json(new { Code = 1, Msg = userid + "不存在!" })); } SSOClient.SignIn(user.UserId); return(Redirect("/pages/home/weixin.html")); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
/// <summary> /// 获取用户信息; /// 微信会进行2次回调,1次断开 /// </summary> /// <param name="code"></param> /// <returns></returns> public GetUserInfoResult GetUserOpenIdByCode(string code) { GetUserInfoResult value = null; bool result = map.TryGetValue(code, out value); if (result) { // map.Remove(code); return(value); } else { value = OAuth2Api.GetUserId(AccessTokenOrAppKey, code); map[code] = value; return(value); } }
private void sessionKeepAliveTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { userinforesult = null; userinforesult = SFDCUtility.SForce.getUserInfo(); if (userinforesult != null) { this.logger.Info("Session keep alive check , Timeout in : " + userinforesult.sessionSecondsValid); } else { this.logger.Error("Session keep alive check returns null"); } } catch (Exception generalException) { this.logger.Error("TruncateNumbers : Error occurred while Truncating incoming data from Salesforce :" + generalException.ToString()); } }
/* 匿名请求: * 1. GET方式 * 2. 入参增加code参数传值:code: '@Request["code"]' * 3. ListIntercept添加Controller、Action * */ protected override void OnActionExecuting(ActionExecutingContext filterContext) { #region 获取微信用户信息 string UserId = string.Empty; string userAgent = Request.UserAgent; string jurl = ""; if (userAgent.ToLower().Contains("micromessenger")) { //从微信端访问 if (Session["WxUserID"] == null || Session["WxUserID"].ToString().Length == 0) { if (string.IsNullOrWhiteSpace(Request.QueryString["code"])) { jurl = OAuth2ApiHelper.GetCode(Request.Url.AbsoluteUri); filterContext.Result = RedirectPermanent(jurl); Logger.Info("jurl:" + jurl); } else { try { GetUserInfoResult result = OAuth2ApiHelper.GetUserId(Request.QueryString["code"]); UserId = result.UserId ?? ""; Logger.Info("GetUserId:" + result.ToJson()); } catch (Exception ex) { Logger.Error(ex); } Session["WxUserID"] = UserId; } } else { UserId = Session["WxUserID"] == null ? string.Empty : Session["WxUserID"].ToString(); } } #endregion base.OnActionExecuting(filterContext); }
public ActionResult SignIn(string code, string state) { try { if (string.IsNullOrEmpty(code)) { return(Redirect("/pages/error/error.html")); } var token = CommonApi.GetToken(_corpId, _secret); if (token.errcode != 0) { return(Redirect("/pages/error/error.html")); } GetUserInfoResult result = OAuth2Api.GetUserId(token.access_token, code); if (result.errcode != 0) { return(Redirect("/pages/error/error.html")); } SysUser user = dbContext.Set <SysUser>().Where(x => x.UserCode == result.UserId).FirstOrDefault(); if (user == null) { //没有账号:根据业务调整 return(Redirect("/pages/error/error.html")); } SSOClient.SignIn(user.UserId); return(ToMenu(state)); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
public void SetUp() { _testEntity = new GetUserInfoResult(); _privateObject = new PrivateObject(_testEntity); }
public ActionResult OAuth2Callback(string corpid, string accesstoken, string scope, string reurl, string code, string state) { //LogWriter.Info("OAuth2Callback:"); string url = reurl ?? ""; url = Base64Helper.DecodeBase64(url.Replace(" ", "+")); if (string.IsNullOrEmpty(code)) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:拒绝了授权", corpid)); return(Content("您拒绝了授权!")); } if (state != "JeffreySu" && state != "JeffreSu?10000skip=true") { //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下 //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证 LogWriter.Info(string.Format("qyid为“{0}”的OAuth2授权失败,原因:验证失败", corpid)); return(Content("验证失败!请从正规途径进入!")); } #region 校验 if (string.IsNullOrEmpty(reurl)) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2Base获取失败,原因:reurl为空", corpid)); return(Content("非法访问")); } var account = GetAccount(corpid); if (account == null) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2Base获取失败,原因:企业号不存在", corpid)); return(Content("非法访问")); } var passtoken = GetPassToken(account, accesstoken); if (passtoken == null) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2Base获取失败,原因:accesstoken错误", corpid)); return(Content("非法访问")); } if (!ValidateOauth2Domain(passtoken, reurl)) { LogWriter.Info(string.Format("qyid为“{0}”的OAuth2Base获取失败,原因:reurl{1}错误", corpid, reurl)); return(Content("非法访问")); } #endregion //通过,用code换取access_token GetUserInfoResult result = null; var wxFO = Formula.FormulaHelper.CreateFO <WxFO>(); try { result = OAuth2Api.GetUserId(wxFO.GetAccessToken(corpid), code); //LogWriter.Info("OAuth2Callback:GetUserId" + JsonHelper.ToJson(result)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("qyid为{0}的静默授权在通过code获取token时异常", corpid)); result = OAuth2Api.GetUserId(wxFO.GetAccessToken(corpid, true), code); } if (result.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("qyid为{0}的静默授权在通过code获取token时异常,原因:{1}", corpid, result.errmsg)); return(Content("错误:" + result.errmsg)); } if (!string.IsNullOrEmpty(result.user_ticket) && !string.IsNullOrEmpty(result.UserId) && (scope == "snsapi_userinfo" || scope == "snsapi_privateinfo")) { GetUserDetailResult resultDetail = null; try { resultDetail = CommonJsonSend.Send <GetUserDetailResult>(wxFO.GetAccessToken(corpid), "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token={0}", new { user_ticket = result.user_ticket, }); //LogWriter.Info("OAuth2Callback:Send" + JsonHelper.ToJson(resultDetail)); } catch (Exception ex) { LogWriter.Error(ex, string.Format("qyid为{0}的认证授权在通过ticket获取详情时异常", corpid)); } if (resultDetail != null && resultDetail.userid != null) { url = string.Format("{0}{1}userinfo={2}" , url, url.Contains('?') ? "&" : "?", Base64Helper.EncodeBase64(JsonHelper.ToJson(new { userid = result.UserId, openid = result.OpenId, name = resultDetail.name, department = resultDetail.department, position = resultDetail.position, mobile = resultDetail.mobile, gender = resultDetail.gender, email = resultDetail.email, avatar = resultDetail.avatar, }))); //LogWriter.Info("OAuth2Callback:url1:" + url); return(Redirect(url)); } } url = string.Format("{0}{1}userinfo={2}" , url, url.Contains('?') ? "&" : "?", Base64Helper.EncodeBase64(JsonHelper.ToJson(new { userid = result.UserId, openid = result.OpenId }))); //LogWriter.Info("OAuth2Callback:url2:" + url); return(Redirect(url)); }
/* 匿名请求: * 1. GET方式 * 2. 入参增加code参数传值:code: '@Request["code"]' * 3. ListIntercept添加Controller、Action * */ protected override void OnActionExecuting(ActionExecutingContext filterContext) { string UserId = string.Empty; string userAgent = Request.UserAgent; string jurl = ""; if (userAgent.ToLower().Contains("micromessenger")) { //从微信端访问 if (Session["WxUserID"] == null || Session["WxUserID"].ToString().Length == 0) { #region 获取微信用户信息 if (string.IsNullOrWhiteSpace(Request.QueryString["code"])) { jurl = OAuth2ApiHelper.GetCode(Request.Url.AbsoluteUri); filterContext.Result = RedirectPermanent(jurl); Logger.Info("jurl:" + jurl); } else { try { GetUserInfoResult result = OAuth2ApiHelper.GetUserId(Request.QueryString["code"]); UserId = result.UserId ?? ""; Logger.Info("GetUserId:" + result.ToJson()); } catch (Exception ex) { Logger.Error(ex); } Session["WxUserID"] = UserId; } #endregion } else { UserId = Session["WxUserID"] == null ? string.Empty : Session["WxUserID"].ToString(); } } if (!IsLogin()) { if (userAgent.ToLower().Contains("micromessenger")) { #region 微信登录 if (!string.IsNullOrWhiteSpace(UserId)) { try { UserEntity userEntity = new UserBLL().WechatLogin(UserId); if (userEntity != null) { #region 记录登录成功信息 AuthorizeBLL authorizeBLL = new AuthorizeBLL(); Operator operators = new Operator(); LoginUserModel LoginUser = new LoginUserModel(); LoginUser.UserId = userEntity.UserId; LoginUser.Code = userEntity.EnCode; LoginUser.Account = userEntity.Account; LoginUser.UserName = userEntity.RealName; LoginUser.Password = userEntity.Password; LoginUser.Secretkey = userEntity.Secretkey; LoginUser.CompanyId = userEntity.OrganizeId; LoginUser.DepartmentId = userEntity.DepartmentId; LoginUser.ManagerId = userEntity.ManagerId; LoginUser.Manager = userEntity.Manager; LoginUser.HeadIcon = userEntity.HeadIcon; LoginUser.IPAddress = Net.Ip; LoginUser.IPAddressName = IPLocation.GetLocation(Net.Ip); LoginUser.LogTime = DateTime.Now; LoginUser.Token = DESEncrypt.Encrypt(Guid.NewGuid().ToString()); operators.LoginInfo = LoginUser; // 写入当前用户数据权限 AuthorizeDataModel dataAuthorize = new AuthorizeDataModel(); dataAuthorize.ReadAutorize = authorizeBLL.GetDataAuthor(operators); dataAuthorize.ReadAutorizeUserId = authorizeBLL.GetDataAuthorUserId(operators); dataAuthorize.WriteAutorize = authorizeBLL.GetDataAuthor(operators, true); dataAuthorize.WriteAutorizeUserId = authorizeBLL.GetDataAuthorUserId(operators, true); operators.DataAuthorize = dataAuthorize; OperatorProvider.AppUserId = userEntity.UserId; OperatorProvider.Provider.AddCurrent(operators); Logger.Info("微信登录写入缓存:" + LoginUser.ToJson()); #endregion } else { Logger.Info("登录失败1"); //跳转到登录页面 filterContext.Result = new RedirectResult("~/Login/Index"); } } catch (Exception ex) { Logger.Info("登录异常"); Logger.Error(ex); //跳转到登录页面 filterContext.Result = new RedirectResult("~/Login/Index"); } } #endregion } else { Logger.Info("非微信--登录失败1"); //跳转到登录页面 filterContext.Result = new RedirectResult("~/Login/Index"); } } base.OnActionExecuting(filterContext); }