mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Corrected port management in user login
--HG-- branch : dev
This commit is contained in:
@@ -4,28 +4,14 @@ using System.Web.Mvc;
|
|||||||
namespace Orchard.Mvc.Extensions {
|
namespace Orchard.Mvc.Extensions {
|
||||||
public static class ControllerExtensions {
|
public static class ControllerExtensions {
|
||||||
public static RedirectResult ReturnUrlRedirect(this Controller controller) {
|
public static RedirectResult ReturnUrlRedirect(this Controller controller) {
|
||||||
var request = controller.HttpContext.Request;
|
string returnUrl = controller.Request.QueryString["ReturnUrl"];
|
||||||
Uri returnUrl = null;
|
|
||||||
try {
|
// prevents phishing attacks by using only relative urls
|
||||||
returnUrl = new Uri(request.QueryString["ReturnUrl"]);
|
if(!returnUrl.StartsWith("/")) {
|
||||||
}
|
return new RedirectResult("~/");
|
||||||
catch {
|
|
||||||
try {
|
|
||||||
returnUrl =
|
|
||||||
new Uri(string.Format("{0}://{1}{2}{3}", request.Url.Scheme, request.Url.Host,
|
|
||||||
request.Url.Port != 80 ? ":" + request.Url.Port : "",
|
|
||||||
request.QueryString["ReturnUrl"]));
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnUrl != null &&
|
return new RedirectResult(returnUrl);
|
||||||
returnUrl.Scheme == request.Url.Scheme &&
|
|
||||||
returnUrl.Port == request.Url.Port &&
|
|
||||||
returnUrl.Host == request.Url.Host) {
|
|
||||||
return new RedirectResult(returnUrl.ToString());
|
|
||||||
}
|
|
||||||
return new RedirectResult("~/");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user