asp.net-mvc authorize-attribute asp.net-mvc-3

El atributo de Autorización Beta ASP.NET MVC me envía a una acción incorrecta



asp.net-mvc authorize-attribute (4)

Hoy comencé a jugar con el MVC 3 Beta. Comenzó con una aplicación de la plantilla MVC 3 predeterminada, agregó una nueva acción en el controlador de la casa de la siguiente manera (con una vista para ella)

[Authorize] public ActionResult Secured() { ViewModel.Message = "This is secured area, only authenticated users should be here."; return View(); }

Ahora, cuando intento ir a navegar a Acción segura, aparece un error de 404 páginas no encontradas.

Aquí está la sección de autenticación de mi web.config.

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication>

Si lo entendí correctamente, el atributo Autorizar debería dar como resultado una respuesta HTTP no autorizada 401 que debería ser interceptada por el controlador de autenticación y redirigirme al loginUrl. Lo que debería resultar en una acción de Cuenta / Inicio de sesión.

Mi aplicación MVC 2 funciona como se esperaba y me lleva a la acción de Cuenta / Inicio de sesión, ¿me estoy perdiendo algo? o ¿Es esto un error en MVC 3 beta?


Después de eliminar WebMatrix * .dll en el directorio bin, todo está bien.


MVC 4 exhibe el mismo problema. Sin embargo, en MVC 4, si el modo de autenticación está configurado correctamente en = "Formularios" en el archivo de configuración, como en el siguiente, el problema desaparece:

<authentication mode ="Forms"> <forms loginurl = "your login" timeout ="2880" slidingExpiration="true"> </authentication>

Esto funciona para mi. Saca el modo y te da problemas.


Ya no funciona con el RTM

Necesitas agregar

<add key="loginUrl" value="~/Account/LogOn" />

a los ajustes de la aplicación en el Web.Config

Los problemas están en ConfigUtil en WebMatrix.WebData

private static string GetLoginUrl() { return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl; } staticFormsAuthenticationSettings() { LoginUrlKey = "loginUrl"; DefaultLoginUrl = "~/Account/Login"; }