public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }

            var cookieAuthenticationEnabled = string.IsNullOrEmpty(WebConfigurationManager.AppSettings.Get("CookieAuthenticationEnabled")) ? false : Convert.ToBoolean(WebConfigurationManager.AppSettings.Get("CookieAuthenticationEnabled"));

            if (cookieAuthenticationEnabled)
            {
                return;
            }

            Uri redirectUrl;

            switch (SPContextHelper.CheckRedirectionStatus(filterContext.HttpContext, out redirectUrl))
            {
            case RedirectionStatus.Ok:
                return;

            case RedirectionStatus.ShouldRedirect:
                filterContext.Result = new RedirectResult(redirectUrl.AbsoluteUri);
                break;

            case RedirectionStatus.CanNotRedirect:
                filterContext.Result = new ViewResult {
                    ViewName = "Error"
                };
                break;
            }
        }
示例#2
0
        public ActionResult Login(string returnUrl)
        {
            if (string.IsNullOrEmpty(returnUrl))
            {
                returnUrl = "/";
            }

            var cookieAuthenticationEnabled = !string.IsNullOrEmpty(WebConfigurationManager.AppSettings.Get("CookieAuthenticationEnabled")) && Convert.ToBoolean(WebConfigurationManager.AppSettings.Get("CookieAuthenticationEnabled"));

            if (cookieAuthenticationEnabled)
            {
                Uri spHostUrl = GetSPHostUrl(returnUrl);
                if (spHostUrl == null)
                {
                    throw new Exception($"Unable to determine {SharePointContext.SPHostUrlKey}.");
                }
                return(new ChallengeResult(SPAddinAuthenticationDefaults.AuthenticationType, spHostUrl.ToString(), returnUrl));
            }
            Uri redirectUrl;
            Uri returnUri;

            if (!Uri.TryCreate(returnUrl, UriKind.RelativeOrAbsolute, out returnUri))
            {
                returnUri = null;
            }
            else
            {
                if (!returnUri.IsAbsoluteUri)
                {
                    Uri.TryCreate(HttpContext.Request.Url, returnUrl, out returnUri);
                }
            }
            switch (SPContextHelper.CheckRedirectionStatus(HttpContext, returnUri, out redirectUrl))
            {
            case RedirectionStatus.Ok:
                return(new RedirectResult(returnUrl));

            case RedirectionStatus.ShouldRedirect:
                return(new RedirectResult(redirectUrl.AbsoluteUri));

            case RedirectionStatus.CanNotRedirect:
                return(new ViewResult {
                    ViewName = "Error"
                });
            }
            return(new RedirectResult(returnUrl));
        }