Недавно я переключил свою структуру локализации mvc3 с lang as subdomain (fr.domain.com) на lang as path (domain.com/fr).

Все работает нормально, кроме автоматического перенаправления на вход в аккаунт.

Допустим, я не аутентифицирован и пытаюсь получить доступ к domain.com/fr/test, меня перенаправляют на domain.com/Account/LogOn?ReturnUrl ...

Как я могу настроить свой сайт так, чтобы меня перенаправляли на / fr / Account / LogOn? ReturnUrl ...

Редактировать :

Я использую карту маршрута

    routes.MapRoute(
        "DefaultLocalized", // Route name
        "{lang}/{controller}/{action}/{id}", // URL with parameters
        new { lang = "en", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        , new { lang = "fr" }
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

РЕШЕНИЕ: Вот моя реализация решения на основе предложения developer10214.

public ActionResult LogOn()
        {
            if (System.Web.HttpContext.Current.Request.Url.Query.Contains("%2ffr%2f") && System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName != "fr")
                return Redirect("/fr/Account/LogOn" + System.Web.HttpContext.Current.Request.Url.Query);

            LogOnModel model = new LogOnModel() { UserName = "", Password = "" };
            return View(model);
        }
1
freddoo 29 Мар 2013 в 06:56
Было бы полезно узнать, как вы внесли изменения в свою локализацию (отображение маршрута, области).
 – 
developer10214
29 Мар 2013 в 14:25

1 ответ

Лучший ответ

Я думаю, что причина, по которой вы перенаправляетесь на обычное действие учетной записи / входа в систему, заключается в том, что этот путь настроен в вашем разделе членства в вашем web.config. Каждый запрос действия, защищенного атрибутом Authorize, будет там, если вы не вошли в систему.

Возможное решение:

  • изменить действие входа в систему, извлекая параметр lang из URL-адреса возврата и перенаправив на правильное действие входа в систему
0
developer10214 29 Мар 2013 в 14:34