ciao, benvenuto nel forum!
loveroma ha scritto:
non riesco a fare il response.redirect all'url corretta
Sì, credo che questo avvenga perché Roles.IsUserInRole ti restituisce sempre false. Prova ad usare il debugger per verificarlo: metti un breakpoint sulla prima istruzione if e poi premi F5 per lanciare il debug. Potrai ispezionare il codice durante la sua esecuzione per verificare che sia effettivamente così.
Perché .IsUserInRole dovrebbe restituirti false? Perché nella richiesta corrente l'utente risulta ancora anonimo se non gli reimposti una diversa identità. La chiamata a FormsAuthentication.SetAuthCookie prepara semplicemente un cookie di autenticazione che servirà ad identificare l'utente in tutte le sue
future richieste.
Il meccanismo di autenticazione entra in gioco prestissimo nel
ciclo di vita della richiesta (guarda
questa immagine che lo illustra bene). L'esecuzione della pagina aspx, invece, avviene quando ormai l'utente è stato battezzato anonimo.
Secondo me, puoi risolvere il problema senza apportare grossi cambiamenti: ti basta usare l'altro overload di .IsUserInRole, quello che accetta il nome dell'utente. Così il nome glielo fornisci tu e non deve andare a prenderselo da solo.
FormsAuthentication.SetAuthCookie (nome,false);
if (Roles.IsUserInRole(nome, "Utente")) {
Response.Redirect("~/utente/defaultutente.aspx");
} else if (Roles.IsUserInRole(nome, "Admin")) {
Response.Redirect("Admin/Default.aspx");
} else if (Roles.IsUserInRole(nome, "Manager")) {
Response.Redirect("Manager/Default.aspx");
}
Se i percorsi che usi nel Redirect non dovessero essere corretti te ne accorgeresti subito perché vedresti apparire un errore 404.
ciao
Modificato da BrightSoul il 18 gennaio 2012 22.25 -