diff --git a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
index df0dc8a72..4a46a4288 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
@@ -86,6 +86,7 @@
+
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/AuthenticationRedirectionFilter.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/AuthenticationRedirectionFilter.cs
new file mode 100644
index 000000000..faa845a4b
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Users/Services/AuthenticationRedirectionFilter.cs
@@ -0,0 +1,30 @@
+using System.Web.Mvc;
+using System.Web.Mvc.Filters;
+using System.Web.Routing;
+using Orchard.Mvc.Filters;
+
+namespace Orchard.Users.Services {
+
+ ///
+ /// This class is responsible for redirecting the user to the authentication page
+ /// of the current tenant.
+ ///
+ public class AuthenticationRedirectionFilter : FilterProvider, IAuthenticationFilter {
+
+ public void OnAuthentication(AuthenticationContext filterContext) {
+ }
+
+ public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext) {
+ if (filterContext.Result is HttpUnauthorizedResult) {
+ filterContext.Result = new RedirectToRouteResult(
+ new RouteValueDictionary
+ {
+ { "controller", "Account" },
+ { "action", "AccessDenied" },
+ { "area", "Orchard.Users"},
+ { "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard/UI/Admin/AdminFilter.cs b/src/Orchard/UI/Admin/AdminFilter.cs
index cd78c4e37..a5b37d9da 100644
--- a/src/Orchard/UI/Admin/AdminFilter.cs
+++ b/src/Orchard/UI/Admin/AdminFilter.cs
@@ -22,6 +22,7 @@ namespace Orchard.UI.Admin {
if (IsAdmin(filterContext)) {
if (!_authorizer.Authorize(StandardPermissions.AccessAdminPanel, T("Can't access the admin"))) {
filterContext.Result = new HttpUnauthorizedResult();
+ filterContext.HttpContext.Response.SuppressFormsAuthenticationRedirect = true;
}
Apply(filterContext.RequestContext);