Недавно я переключил свою структуру локализации 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 ответ
Я думаю, что причина, по которой вы перенаправляетесь на обычное действие учетной записи / входа в систему, заключается в том, что этот путь настроен в вашем разделе членства в вашем web.config. Каждый запрос действия, защищенного атрибутом Authorize, будет там, если вы не вошли в систему.
Возможное решение:
- изменить действие входа в систему, извлекая параметр lang из URL-адреса возврата и перенаправив на правильное действие входа в систему
Похожие вопросы
Новые вопросы
asp.net-mvc
ASP.NET MVC Framework - это платформа и инструмент веб-приложений с открытым исходным кодом, которые реализуют версию шаблона модель-представление-контроллер (MVC), адаптированную к веб-приложениям и построенную на основе технологии ASP.NET.