Estoy escribiendo una aplicación que utiliza asp.net-mvc que se implementa en iis6. Estoy usando autenticación de formularios. Por lo general, cuando un usuario intenta acceder a un recurso sin la autorización adecuada, quiero que se redirija a una página de inicio de sesión. FormsAuth hace esto para mí con bastante facilidad.Bypass Forms Autenticación automática de redireccionamiento para iniciar sesión, ¿cómo?
Problema: Ahora tengo acceso a una acción desde una aplicación de consola. ¿Cuál es la forma más rápida de responder a esta acción con el estado 401 en lugar de redirigir la solicitud a la página de inicio de sesión?
Quiero que la aplicación de la consola pueda reaccionar a este 401 StatusCode en lugar de ser transparente. También me gustaría mantener las solicitudes desautorizadas redirigidas por defecto para el comportamiento de la página de inicio de sesión.
Nota: Como una prueba he añadido esto a mi global.asax y no lo hizo formas de derivación de autenticación:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpContext.Current.SkipAuthorization = true;
}
@Dale y Andy
estoy usando el AuthorizeAttributeFilter proporcionado en MVC preview 4. Esto está devolviendo un HttpUnauthorizedResult. Este resultado establece correctamente el código de estado en 401. El problema, tal como lo entiendo, es que asp.net está interceptando la respuesta (ya que es taged como 401) y redirigiendo a la página de inicio de sesión en lugar de simplemente dejarla pasar. Quiero omitir esta intercepción para ciertas URL.
Ver http://stackoverflow.com/questions/2839406/forms-authentication-disable-redirect-to-the-login-page –