Пример #1
0
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            UserSession user = default(UserSession);

            try
            {
                var cacheKey = string.Format("UserData_{0}", username);

                if (HttpRuntime.Cache[cacheKey] != null)
                {
                    return((CustomMembershipUser)HttpRuntime.Cache[cacheKey]);
                }
                else
                {
                    UserSession userF = new UserSession()
                    {
                        Email = username
                    };
                    Result resultApi = new Result();
                    using (var client = new HttpClient())
                    {
                        client.BaseAddress = new Uri(baseUrl);
                        client.DefaultRequestHeaders.Clear();
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage res = client.PostAsJsonAsync("api/Secutity/GetUserByUserName/", userF).Result;
                        if (res.IsSuccessStatusCode)
                        {
                            var response = res.Content.ReadAsStringAsync().Result;
                            resultApi = JsonConvert.DeserializeObject <Result>(response);
                            if (resultApi.Status == ResultStatus.Ok)
                            {
                                userF = JsonConvert.DeserializeObject <UserSession>(resultApi.ObjectResult.ToString());
                            }
                        }
                    }
                    if (userF != null)
                    {
                        user = GetUsuarioLogin(userF);

                        UserSession userSession = GetUserSession(user);
                        if (userSession != null)
                        {
                            var membershipUser = new CustomMembershipUser(userSession);

                            HttpRuntime.Cache.Insert(cacheKey, membershipUser, null, DateTime.Now.AddMinutes(cacheTimeoutInMinutes), Cache.NoSlidingExpiration);

                            return(membershipUser);
                        }
                    }

                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
0
        public override bool ValidateUser(string username, string password)
        {
            var         result = false;
            UserSession userF  = new UserSession()
            {
                Email    = username,
                Password = password
            };
            Result resultApi = new Result();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(baseUrl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage res = client.PostAsJsonAsync("api/Security/GetUserByUserName/", userF).Result;
                if (res.IsSuccessStatusCode)
                {
                    var response = res.Content.ReadAsStringAsync().Result;
                    resultApi = JsonConvert.DeserializeObject <Result>(response);
                    if (resultApi.Status == ResultStatus.Ok)
                    {
                        userF = JsonConvert.DeserializeObject <UserSession>(resultApi.ObjectResult.ToString());
                    }
                }
            }

            if (resultApi.Status == ResultStatus.Error)
            {
                throw new Exception(resultApi.Message);
            }
            if (string.IsNullOrEmpty(password) && userF != null)
            {
                if (resultApi.Status == ResultStatus.Error)
                {
                    throw new Exception(resultApi.Message);
                }
                UserSession user        = GetUsuarioLogin(userF);
                var         userSession = GetUserSession(user);

                if (userSession != null)
                {
                    var membershipUser = new CustomMembershipUser(userSession);
                    var cacheKey       = string.Format("UserData_{0}", username);
                    HttpRuntime.Cache.Insert(cacheKey, membershipUser, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);

                    result = true;
                }
            }
            else
            {
                UserSession userLog = new UserSession()
                {
                    Email    = username,
                    Password = password
                };
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(baseUrl);
                    client.DefaultRequestHeaders.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage res = client.PostAsJsonAsync("api/Security/GetUserByUserName/", userLog).Result;
                    if (res.IsSuccessStatusCode)
                    {
                        var response = res.Content.ReadAsStringAsync().Result;
                        resultApi = JsonConvert.DeserializeObject <Result>(response);
                        if (resultApi.Status == ResultStatus.Ok)
                        {
                            userLog = JsonConvert.DeserializeObject <UserSession>(resultApi.ObjectResult.ToString());
                        }
                    }
                }
                result = userLog != null;
                if (result)
                {
                    UserSession user        = GetUsuarioLogin(userLog);
                    var         userSession = GetUserSession(user);
                    if (userSession != null)
                    {
                        System.Web.HttpContext.Current.Session["CustomerId"] = userSession.CustomerId;
                    }
                }
            }
            return(result);
        }