Пример #1
0
        public override HttpHandlerResult Post()
        {
            var vm = new LoginVM(this);

            vm.Restore(Request.FormData());

            var user = new HttpUserCredentials {
                Username = vm.Username,
                Password = vm.Password,
            };

            var serverSecurity = (HttpSecurityManager)Context.SecurityMgr;

            if (!serverSecurity.Authorize(HttpContext.Response, user))
            {
                vm.AuthMessage = "Invalid Credentials";
                vm.Build();

                return(Response.View("Login.html", vm));
            }

            var returnUrl = GetQuery("returnUrl");

            if (!string.IsNullOrEmpty(returnUrl))
            {
                return(Response.RedirectUrl(returnUrl));
            }

            return(Response.Redirect("/index"));
        }
Пример #2
0
        public bool Authorize(HttpListenerRequest request)
        {
            // Authorization Cookie
            var authCookie = request.Cookies[CookieName];
            var token      = authCookie?.Value;

            if (!string.IsNullOrEmpty(token) && userTokens.TryGet(token, out var userContext))
            {
                userContext.Restart();
                return(true);
            }

            // Authorization Header
            var authHeader = request.Headers.Get("Authorization");

            if (authHeader != null)
            {
                // Basic Authorization Header
                if (authHeader.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
                {
                    var encodedAuth = authHeader.Substring(6).Trim();
                    var authBytes   = Convert.FromBase64String(encodedAuth);
                    var authKey     = Encoding.UTF8.GetString(authBytes);

                    var i = authKey.IndexOf(':');
                    if (i >= 0)
                    {
                        var userCreds = new HttpUserCredentials {
                            Username = authKey.Substring(0, i),
                            Password = authKey.Substring(i + 1),
                        };

                        userContext = Authorization.Authorize(userCreds);

                        if (userContext != null)
                        {
                            userContext.Restart();
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Пример #3
0
        public bool Authorize(HttpListenerResponse response, HttpUserCredentials user)
        {
            var _user = Authorization.Authorize(user);

            if (_user == null)
            {
                return(false);
            }

            _user.Lifespan = TimeSpan.FromMinutes(60);
            _user.Restart();

            userTokens.Add(_user);

            var cookie = new Cookie(CookieName, _user.SessionId)
            {
                Expires = DateTime.Now.AddYears(1),
            };

            response.SetCookie(cookie);

            return(true);
        }
Пример #4
0
        public bool Authenticate(HttpListenerResponse response, HttpUserCredentials user)
        {
            // TODO: Verify new credentials

            return(true);
        }