Пример #1
0
        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);
        }
Пример #2
0
        /**
         * 与安全相关的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"]);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        ///<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));
        }
Пример #5
0
        /// <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)));
        }
Пример #6
0
        /// <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)));
        }
Пример #7
0
        /// <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;
        }
Пример #8
0
        /// <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)));
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
        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;
        }
Пример #11
0
 /// <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)))));
 }
Пример #12
0
 /// <summary>
 /// 得到 UserAgent 字符串
 /// </summary>
 /// <returns></returns>
 protected virtual string GetUserAgent()
 {
     return(UcUtility.GetUserAgent());
 }
Пример #13
0
 public UcClient(IUcConfig ucConfig, UcUtility ucUtility) : base(ucConfig, ucUtility)
 {
 }
Пример #14
0
        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);
        }
Пример #15
0
 public static void setUserLoginidCookies(string logidid = "")
 {
     setcookie("loginuserID", logidid, UcUtility.PhpTimeNow() + 3600 * 24 * 7,
               ConfigurationManager.AppSettings["RootDomain"]);
 }
Пример #16
0
 public UcClientBase(IUcConfig ucConfig, UcUtility ucUtility)
 {
     this.UcConfig  = ucConfig;
     this.UcUtility = ucUtility;
 }