示例#1
0
        public void Store(IHttpResponseDescriptor response, Uri requestUri, Token token)
        {
            var cookie = new Cookie();

            if (Secure)
            {
                cookie.Secure = true;
            }
            cookie.Path     = "/";
            cookie.HttpOnly = true;
            cookie.Domain   = GetDomain(requestUri);
            cookie.Name     = CookieName;
            if (null == token)
            {
                cookie.Expires = DateTime.Now.AddYears(-1);
                cookie.Value   = "";
            }
            else
            {
                cookie.Expires = token.Expire.AddMinutes(5);
                cookie.Value   = TokenEncryptor.Encrypt(token);
            }
            response.Cookies = response.Cookies ?? new CookieCollection();
            response.Cookies.Add(cookie);
        }
示例#2
0
        public void Authenticate(IHttpRequestDescriptor request, IHttpResponseDescriptor response)
        {
            var identity = (Identity)IdentitySource.GetUserIdentity(request);

            request.User = new GenericPrincipal(identity, null);
            var token = identity.IsAuthenticated ? identity.Token : null;

            if (identity.IsAuthenticated)
            {
                if (OpLog.IsForDebug())
                {
                    OpLog.Debug(new { isauth = true, login = identity.Name, url = request.Uri.ToString() }.stringify());
                }
            }
            else
            {
                if (null == identity.DisabledToken)
                {
                    if (OpLog.IsForDebug())
                    {
                        OpLog.Debug(new { isauth = false, login = identity.Name, url = request.Uri.ToString() }.stringify());
                    }
                }
                else
                {
                    if (OpLog.IsForInfo())
                    {
                        OpLog.Info(new { isauth = false, login = identity.Name, url = request.Uri.ToString(), disabledtoken = identity.DisabledToken }.stringify());
                    }
                }
            }
            TokenService.Store(response, request.Uri, token);
        }
示例#3
0
        /// <summary>
        /// Sends the <see cref="HttpRequestMessage"/>
        /// </summary>
        /// <returns>The resulting <see cref="HttpStatusCode"/></returns>
        protected async Task <int> RequestAsync()
        {
            using (HttpRequestMessage request = new HttpRequestMessage(this.Method, this.Uri))
            {
                this.Headers?.Invoke(request.Headers);
                request.Content = await this.Content?.CloneAsync();

                using (HttpResponseMessage response = await this.HttpClient.SendAsync(request))
                {
                    if (this.ParseResponse)
                    {
                        this.Response = await this.HttpResponseParser.ParseAsync(response);
                    }
                    if (this.EnsureSuccessStatusCode)
                    {
                        response.EnsureSuccessStatusCode();
                    }
                    return((int)response.StatusCode);
                }
            }
        }