2011-08-23 11 views
8

Questo mi confonde. Supporrei che il webmethod seguisse le stesse regole di autorizzazione impostate in web.config come la pagina su cui si trova. Eseguirà prima il normale ciclo di vita della pagina? Nel mio caso c'è una logica extra in un basepage che controlla ulteriori permessi. Questa logica verrà eseguita prima che il webmetod venga chiamato per impedire agli utenti non autorizzati ad accedere a quella pagina?Un metodo web in codebehind è sicuro quanto la pagina in cui si trova?

+0

Come viene implementata la logica aggiuntiva? Su quale evento viene eseguito? – Oded

+0

Quando dici le stesse regole della pagina su cui si trova, vuoi dire che hai un ASMX e ASPX nella stessa applicazione web, cioè sotto lo stesso web.config? Se stai chiamando ad un ASMX in una diversa applicazione web sarà diverso. – Rup

+0

stessa applicazione web. Vorrei solo mettere il webmethod nel codebehind poiché le chiamate ajax verranno solo dalla pagina aspx. Sono consapevole che probabilmente starò meglio usando un gestore, ma non ho il pieno controllo su questo progetto, quindi mi piacerebbe contenere il codice nella pagina stessa. – Mike

risposta

7

Un webmethod deve essere statico e non segue il normale ciclo di vita ASP.NET.

In un metodo web, non è possibile accedere alla sessione o ai controlli sulla pagina.

Dal momento che non passerà attraverso tutti gli eventi, non penso che il tuo PreInit sarà chiamato così non sarai in grado di limitare l'accesso attraverso questo.

1

La linea di fondo è un metodo web molto meno sicuro rispetto all'utilizzo del metodo tradizionale asmx web. Anche se è possibile che il metodo appaia in /default.aspx/MyWebMethod, non verrà utilizzato nessuno dei moduli integrati di sicurezza e potrà essere richiamato da qualsiasi punto dell'applicazione.

Problemi correlati