MVC 5 Cómo definir Owin LoginPath con rutas localizadas
Tengo un sitio web de MVC 5 con rutas localizadas definidas como
routes.MapRoute(
name: "Default",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Donde la cultura por defecto resulta en"en-US"
.
El problema surge cuando en el inicio tengo que definir la url de inicio de sesión usando la propiedad LoginPath, que se establece una vez y siempre usará el valor proporcionado, por ejemplo. la cultura predeterminada si "/ en-Us / Account / Login" es el valor especificado. Luego intenté usar la clase UrlHelper con la esperanza de experimentar algo de magia, pero el resultado es obviamente el mismo:
var httpContext = HttpContext.Current;
if (httpContext == null) {
var request = new HttpRequest("/", "http://example.com", "");
var response = new HttpResponse(new StringWriter());
httpContext = new HttpContext(request, response);
}
var httpContextBase = new HttpContextWrapper(httpContext);
var routeData = new RouteData();
var requestContext = new RequestContext(httpContextBase, routeData);
UrlHelper helper = new UrlHelper(requestContext);
var loginPath = helper.Action("Login", "Account");
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString(loginPath)
});
Mi pregunta es: ¿hay una manera de piratear este mecanismo para recuperar dinámicamente la cultura actual o me veo forzado a establecer la cultura actual en una cookie y, cuando me redireccionen a la página de inicio de sesión, use el valor de la cookie para configurar la actual? ¿Cultura antes de renderizar la página?
Gracias