3.939 messaggi dal 28 gennaio 2003
Il sito asp.net usa l'autenticazione form, presentando la pagina di login.

Ho provato a richiamare un servizio del sito passando le credenziali via get: http://sito/servizio?user=...&password=...

Il sistema richiama la pagina di login e lì intercetto le credenziali e verifico.

Il tutto funziona. Funziona però solo passando le credenziali via get.
Passandole via post le perdo.
Non ci sarebbe un modo per farlo?

ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
se le passi via POST riuscirai a recuperarle con Request.Form["user"] e Request.Form["password"]. Se questi valori sono stati passati, effettua la query al db per verificare che siano validi, emetti il cookie di autenticazione e reindirizza l'utente verso una pagina interna.

Cosa intendi con "li perdo"?

ciao,
Moreno

ps. Meglio non passare credenziali via GET perché i webserver sono soliti loggare gli URL delle richieste, e i dati di accesso potrebbero restare in bella vista in un file di testo.

Enjoy learning and just keep making
3.939 messaggi dal 28 gennaio 2003
uso questo semplice html per la prova di richiamo una pagina protetta:
<form action="/miosito/modulo_generale/test_misure_decodificate.aspx" method="get">
  <input type="hidden" name="user" value="prova" />
  <input type="hidden" name="password" value="0000" />
  <input id="Submit1" type="submit" value="submit" />
</form>



visto che la pagina è protetta, il sistema .net reindirizza verso la pagina di login.
Nell'evento load intercetto i parametri passati e proseguo o meno a seconda se sono corretti.
Riesco a recuperare SOLO i parametri inviati via GET; via POST non recupero niente.

ps. naturalmente sono solo prove ma sono davvero curioso di capire se e come si possa risolvere.

ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

pietro09 ha scritto:
visto che la pagina è protetta, il sistema .net reindirizza verso la pagina di login.

Ah ok, ora capisco perché perdi i valori inviati in POST. Il reindirizzamento è una richiesta GET e perciò i dati inviati via POST non vengono conservati.

Credo che la soluzione più facile sia cambiare la action del tuo form. Anziché inviare quei dati alla pagina test_misure_decodificate.aspx, mandali alla pagina login.

<form action="http://miosito/login.aspx?ReturnUrl=%2Fmiosito%2Fmodulo_generale%2Ftest_misure_decodificate.aspx" method="post">
  <input type="hidden" name="user" value="prova" />
  <input type="hidden" name="password" value="0000" />
  <input id="Submit1" type="submit" value="submit" />
</form>

Avendo indicato il parametro querystring ReturnUrl, la pagina di login effettuerà la ridirezione verso quella pagina subito dopo aver emesso il cookie di autenticazione.

L'alternativa sarebbe quella di scriverti un HttpModule che andrebbe in esecuzione ad ogni richiesta e fare l'autenticazione da lì. In questo modo la action del form potrebbe restare quella che avevi messo tu.

ciao,
Moreno
Modificato da BrightSoul il 11 novembre 2015 20.45 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
chiedo scusa se mi intrometto, ma con il codice di Moreno il passaggio sarebbe comunque via get, giusto?
Grazie
3.939 messaggi dal 28 gennaio 2003
Non lo avevo visto. Naturalmente è una dimenticanza. Va messo method=post e funziona benissimo
11.886 messaggi dal 09 febbraio 2002
Contributi
PR17 ha scritto:
chiedo scusa se mi intrometto, ma con il codice di Moreno il passaggio sarebbe comunque via get, giusto?
Grazie

Hai ragione. Si, è stata una dimenticanza, ora lo correggo.

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.