private static string _getAuthCookies(string cookieName, string cookieKey, int expire = 0, string safeKey = API_UTILITY_USERCOOKIES_SAFEKEY) { HttpCookie cookies = HttpContext.Current.Request.Cookies[cookieName]; if (cookies == null) { return(null); } //if (cookies[cookieName] == null) return null; if (string.IsNullOrEmpty(cookies.Value)) { return(null); } string val = UcUtility.AuthCodeDecode(cookies.Value, safeKey, expire); var list = new List <KeyValuePair <string, string> >(); string[] cookiearr = val.Split('|'); foreach (var v in cookiearr) { //list($key, $value) = explode("=", $v); string[] lskv = v.Split('='); // KeyValuePair<string, string> kv = new KeyValuePair<string,string>( lskv[0],lskv[1]); //if( if (lskv[0] == cookieKey) { return(lskv[1]); } } return(null); }
/** * 与安全相关的cookies设置 * @param unknown_type $cookieName * @param unknown_type $data * @param unknown_type $safeKey * @param unknown_type $expire * @param unknown_type $domain */ private static void _setAuthCookies(string cookieName, IEnumerable <KeyValuePair <string, string> > data, int expire = 0, string safeKey = API_UTILITY_USERCOOKIES_SAFEKEY) { long time = expire > 0 ? UcUtility.PhpTimeNow() + expire : 0; string val = ""; foreach (var kv in data) { val += kv.Key + "=" + kv.Value + "|"; } setcookie(cookieName, UcUtility.AuthCodeEncode(val, safeKey, expire), time, ConfigurationManager.AppSettings["RootDomain"]); }
/// <summary> /// 得到DateTime /// </summary> /// <param name="data"></param> /// <param name="key"></param> /// <returns></returns> static public DateTime GetDateTime(this IDictionary data, string key) { var result = default(DateTime); if (data != null) { if (data.Contains(key)) { result = UcUtility.PhpTimeToDateTime(long.Parse(data[key].ToString())); } } return(result); }
///<summary> /// 修改头像 ///</summary> ///<param name="uid">Uid</param> ///<param name="type"></param> ///<returns></returns> public string Avatar(decimal uid, AvatarType type = AvatarType.Virtual) { var args = new Dictionary <string, string> { { "uid", uid.ToString() } }; string input = GetInput(args); string movie = string.Format("{0}images/camera.swf?inajax=1&appid={1}&input={2}&agent={3}&ucapi={4}&avatartype={5}", UcConfig.UcApi, UcConfig.UcAppid, input, UcUtility.Md5(UcUtility.GetUserAgent()), UcUtility.PhpUrlEncode(UcConfig.UcApi.Replace("http://", "")), type.ToString().ToLower()); return(getFlashPlayerCode(movie)); }
/// <summary> /// 用户注册 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">密码</param> /// <param name="email">Email</param> /// <param name="questionId">登陆问题</param> /// <param name="answer">答案</param> /// <returns></returns> public UcUserRegister UserRegister(string userName, string passWord, string email, int questionId = 0, string answer = "") { var args = new Dictionary <string, string> { { "username", userName }, { "password", UcUtility.PhpUrlEncode(passWord) }, { "email", email }, { "questionid", questionId.ToString() }, { "answer", answer } }; return(new UcUserRegister(SendArgs(args, UcUserModelName.ModelName, UcUserModelName.ActionRegister))); }
/// <summary> /// 用户登陆 /// </summary> /// <param name="userName">用户名/Uid/Email</param> /// <param name="passWord">密码</param> /// <param name="loginMethod">登录方式</param> /// <param name="checkques">需要登陆问题</param> /// <param name="questionId">问题ID</param> /// <param name="answer">答案</param> /// <returns></returns> public UcUserLogin UserLogin(string userName, string passWord, LoginMethod loginMethod = LoginMethod.UserName, bool checkques = false, int questionId = 0, string answer = "") { var args = new Dictionary <string, string> { { "username", userName }, { "password", UcUtility.PhpUrlEncode(passWord) }, { "isuid", ((int)loginMethod).ToString() }, { "checkques", checkques ? "1" : "0" }, { "questionid", questionId.ToString() }, { "answer", answer } }; return(new UcUserLogin(SendArgs(args, UcUserModelName.ModelName, UcUserModelName.ActionLogin))); }
/// <summary> /// 构造函数 /// </summary> /// <param name="request">Request</param> public UcRequestArguments(HttpRequest request) { Code = request.QueryString["code"]; FormData = HttpUtility.UrlDecode(request.Form.ToString(), Encoding.GetEncoding(UcConfig.UcCharset)); QueryString = HttpUtility.ParseQueryString(UcUtility.AuthCodeDecode(Code)); Action = QueryString["action"]; long time; if (long.TryParse(QueryString["time"], out time)) { Time = time; } IsInvalidRequest = request.QueryString.Count == 0 && UcActions.Contains(Action); IsAuthracationExpiried = (UcUtility.PhpTimeNow() - Time) > 0xe10; }
/// <summary> /// 更新用户信息 /// 更新资料需验证用户的原密码是否正确,除非指定 ignoreoldpw 为 1。 /// 如果只修改 Email 不修改密码,可让 newpw 为空; /// 同理如果只修改密码不修改 Email,可让 email 为空。 /// </summary> /// <returns></returns> public UcUserEdit UserEdit(string userName, string oldPw, string newPw, string email, bool ignoreOldPw = false, int questionId = 0, string answer = "") { var args = new Dictionary <string, string> { { "username", userName }, { "oldpw", UcUtility.PhpUrlEncode(oldPw) }, { "newpw", UcUtility.PhpUrlEncode(newPw) }, { "email", email }, { "ignoreoldpw", ignoreOldPw ? "1" : "0" }, { "questionid", questionId.ToString() }, { "answer", answer } }; return(new UcUserEdit(SendArgs(args, UcUserModelName.ModelName, UcUserModelName.ActionEdit))); }
/// <summary> /// 设置 cookies /// </summary> /// <param name="cookieName"></param> /// <param name="value"></param> /// <param name="time"></param> /// <param name="domain"></param> private static void setcookie(string cookieName, string value, long time, string domain) { var cookies = new HttpCookie(cookieName, value); if (!string.IsNullOrEmpty(domain) && domain != "localhost") { cookies.Domain = domain; } cookies.Path = "/"; if (time > 0) { cookies.Expires = UcUtility.PhpTimeToDateTime(time); } else { //cookies.Expires = DateTime.Now.AddDays(14); } HttpContext.Current.Response.AppendCookie(cookies); //.a.Cookies.Add(cookies); }
public UcApiWrapper(string code, NameValueCollection queryString, string formData, IUcConfig ucConfig, IUcApi ucApi, UcUtility ucUtility) { this.Code = code; this.QueryString = queryString; this.FormData = formData; Action = QueryString["action"]; long time; if (long.TryParse(QueryString["time"], out time)) { Time = time; } IsInvalidRequest = QueryString.Count == 0 && UcActions.Contains(Action); IsAuthracationExpiried = (UcUtility.PhpTimeNow() - Time) > 0xe10; this._ucConfig = ucConfig; this._ucApi = ucApi; this._ucUtility = ucUtility; }
/// <summary> /// 得到加密后的input参数 /// </summary> /// <param name="args"></param> /// <returns></returns> protected string GetInput(IDictionary <string, string> args) { args.Add("agent", UcUtility.Md5(GetUserAgent())); args.Add("time", UcUtility.PhpTimeNow().ToString()); return(UcUtility.PhpUrlEncode((UcUtility.AuthCodeEncode(ArgsToString(args))))); }
/// <summary> /// 得到 UserAgent 字符串 /// </summary> /// <returns></returns> protected virtual string GetUserAgent() { return(UcUtility.GetUserAgent()); }
public UcClient(IUcConfig ucConfig, UcUtility ucUtility) : base(ucConfig, ucUtility) { }
public async Task InvokeAsync(HttpContext context, IUcApi ucApi, IUcConfig ucConfig, UcUtility ucUtility) { NameValueCollection tempQs = new NameValueCollection(); tempQs = HttpUtility.ParseQueryString(context.Request.QueryString.Value); string code = tempQs["code"]; NameValueCollection queryString = HttpUtility.ParseQueryString(ucUtility.AuthCodeDecode(code)); string formData = ""; // context.Request.Form.ToString(); var requestReader = new StreamReader(context.Request.Body); string requestContent = await requestReader.ReadToEndAsync(); formData = requestContent; UcApiWrapper ucApiWrapper = new UcApiWrapper(code, queryString, formData, ucConfig, ucApi, ucUtility); string responseStr = ucApiWrapper.Process(); if (ucApiWrapper.IsNeedHeaders) { foreach (var item in ucApiWrapper.Headers) { context.Response.Headers.Add(item.Key, item.Value); } } await context.Response.WriteAsync(responseStr); }
public static void setUserLoginidCookies(string logidid = "") { setcookie("loginuserID", logidid, UcUtility.PhpTimeNow() + 3600 * 24 * 7, ConfigurationManager.AppSettings["RootDomain"]); }
public UcClientBase(IUcConfig ucConfig, UcUtility ucUtility) { this.UcConfig = ucConfig; this.UcUtility = ucUtility; }