2009-04-13 10 views
8

Estaba a punto de usar [Authorize] en Acciones que devuelven vistas parciales a través de Ajax; pero no obtengo el comportamiento que me gustaría (aunque es el comportamiento que esperaba).¿Cuál es la mejor forma de utilizar el atributo [Autorizar] con Ajax y vistas parciales?

Parece una posibilidad remota; pero, ¿hay alguna manera de extender este atributo para "romper" una llamada AJAX y redirigir toda la página a la pantalla de inicio de sesión? (En lugar de devolver la pantalla de inicio de sesión a cualquier ubicación que haya configurado UpdateTargetId?)

Creo que tengo una idea de cómo haría esto en cada una de las llamadas Ajax específicas, pero si pudiera centralizar esto de alguna manera , ahorraría un montón de código ...

Respuesta

8

AuthorizeAttribute no hará esto por usted, pero puede centralizar su código. Cree un nuevo atributo que devuelva el código de estado HTTP 401 (no autorizado) cuando ningún usuario esté actualmente conectado. En un archivo JavaScript al que hace referencia su site.master, maneje el evento jQuery $ .ajaxError. Busque http 401 en el código de estado de respuesta y redirija a su página de inicio de sesión a través de JavaScript. Ahora cualquier llamada de Ajax que realice a través de jQuery terminará aquí si el usuario actual no está autorizado.

Cuestiones relacionadas