public ProductUserViewModel GetTicket() { if (HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName] != null) { var cookie1 = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; if (cookie1 != null) { var hash = cookie1.Value; var ticket = FormsAuthentication.Decrypt(hash); var user = ticket.UserData.DeserializeFromJson <ProductUserViewModel>(); if (user != null && user.Id > 0) { return(user); } } else { var username = HttpContext.Current.User.Identity.Name; var user = new ProductUserBll().GetProductUser(username); SetTicket(user); return(user); } } HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl); return(null); }
// GET: OAuth /// <summary> /// 授权回调入口 /// </summary> /// <param name="code"></param> /// <returns></returns> public ActionResult Index(string code) { RPoney.Log.LoggerManager.Debug(GetType().Name, $"授权回调处理,code:{code}"); try { var getToken = ApiCommon.GetToken(AppConfigBll.AppConfig.AppKey, AppConfigBll.AppConfig.AppSecrect, AppConfigBll.AppConfig.AppRediretUrl, code); if (null == getToken) { return(View("_Error")); } RPoney.Log.LoggerManager.Debug(GetType().Name, $"查找商家token:{getToken.SerializeToJSON()}"); var productUserToken = new T_ProductUserTokenEntity { AliId = getToken.AliId, MemberId = getToken.MemberId, ResourceOwner = getToken.ResourceOwner, AccessToken = getToken.AccessToken, RefreshToken = getToken.RefreshToken, ExpiresIn = getToken.ExpiresIn.CInt(0, false), RefreshTokenTimeout = getToken.RefreshTokenTimeout.GetDateTimeFromUtc(DateTime.MinValue), UpdateTime = DateTime.Now }; RPoney.Log.LoggerManager.Debug(GetType().Name, $"进入授权回调处理,productUserToken:{productUserToken.SerializeToJSON()}"); if (new T_ProductUserTokenBll().Save(productUserToken)) { var productUserBll = new ProductUserBll(); var user = productUserBll.GetProductUser(getToken.ResourceOwner); if (null == user) { productUserBll.Add(new ProductUserEntity() { ResourceOwner = getToken.ResourceOwner }); user = productUserBll.GetProductUser(getToken.ResourceOwner); } if (null != user) { TicketStorageFactory.InstanceTicketStorage <ProductUserViewModel>().SetTicket(user); } return(RedirectToAction("Index", "Home")); } RPoney.Log.LoggerManager.Debug(GetType().Name, $"保存授权信息失败,code:{code}"); return(View("_Error")); } catch (Exception ex) { RPoney.Log.LoggerManager.Error(GetType().Name, $"授权回调出错,code:{code}", ex); return(View("_Error")); } }