2009-04-13 6 views
8

Stavo per utilizzare [Authorize] su Azioni che restituiscono viste parziali tramite Ajax; ma non sto ottenendo il comportamento che mi piacerebbe (anche se è il comportamento che mi aspettavo).Come posso utilizzare al meglio l'attributo [Autorizza] con Ajax e Viste parziali?

Sembra un campo lungo; ma esiste un modo per estendere questo attributo a "scoppiare" di una chiamata AJAX e reindirizzare l'intera pagina alla schermata di accesso? (Al contrario di restituire la schermata di accesso a qualsiasi posizione ho impostato UpdateTargetId?)

Penso di avere una maniglia su come farei questo su ciascuna delle chiamate Ajax specifiche, ma se potessi centralizzare questo in qualche modo , risparmierebbe molto codice ...

risposta

8

AuthorizeAttribute non lo farà per te, ma puoi centralizzare il tuo codice. Crea un nuovo attributo che restituisce il codice di stato http 401 (non autorizzato) quando nessun utente ha effettuato l'accesso. In un file JavaScript a cui fa riferimento il tuo site.master, gestisce l'evento $ jaeryaError. Cerca http 401 nel codice di stato della risposta e reindirizza alla tua pagina di accesso tramite JavaScript. Ora qualsiasi chiamata Ajax effettuata tramite jQuery finirà qui se l'utente corrente non è autorizzato.

Problemi correlati