Witam, próbuje zaimplementować funkcjonalność która będzie przekierowywać nieautoryzowanym użytkowników do odpowiednich formularzy. Korzystam z werscji MVC 5, gdzie zaimplementowane mam Identity 2.0 z Owinem( i tutaj może znajdować się przyczyna problemu). W praktycy wygląda to tak. Posiadam AdminController i AccountController chciałbym, aby nieautoryzowanie żądanie z AdminController było przekierowywane do akcji Login w tym właśnie kontrolerze(Admin), natomiast w przypadku AccountController, przekierowywane do akcji Login w AccountController.

Stworzyłem własną klasę autoryzującą: Atrybut ten dodałem w FilterConfig.

 public class AdminAuthorize : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            var ctx = filterContext.HttpContext.GetOwinContext();
            if (!ctx.Request.User.Identity.IsAuthenticated)
            {
                //ctx.Authentication.SignOut();
                var controler = (string)filterContext.RouteData.Values["controller"];
                var url = filterContext.HttpContext.Request.FilePath;

                if (controler.Equals("Admin"))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {controller = "Admin", action = "Login"}));
                }
                else
                {
                     filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {controller = "Account", action = "Login"}));
                   // HttpContext.Current.ClearError();              
                }
            }
            else
            {
                base.OnAuthorization(filterContext);
            }       
        }
    }
 

Co do działania aplikacji. Nie dostaje żadnego eksepszyna, tylko program zapętla się w tej właśnie metodzie OnAuthorization i dostaje komunikat w przeglądarce typu "Nieprawidłowe przekierowanie". Podejrzewam, że przyczyną może być Owin ktory znajduje się w Startup i przesyła do określonego formularza. Jednak komentując ten linie nadal występuje ten problem..

 
    app.UseCookieAuthentication(new CookieAuthenticationOptions
            {

                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                //CookieSecure = CookieSecureOption.Always

            });
 
            app.CreatePerOwinContext(ProjectDDDContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
            //app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);


        }

Jakieś pomysły?