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; } }
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)); }