2 messaggi dal 17 novembre 2011
salve volevo fare in modo che una volta autenticato l'utente fosse reindirizzato alla cartella relativa al ruolo di appartenenza ma una volta autenticato rimango nella pagina login ma posso accedere alla cartella voluta. Insomma non riesco a fare il response.redirect all'url corretta. Invio il codice
FormsAuthentication.SetAuthCookie (nome,false);
if (Roles.IsUserInRole("Utente"))
{
Response.Redirect("~/utente/defaultutente.aspx");
}
if (Roles.IsUserInRole("Admin"))
{
Response.Redirect("Admin/Default.aspx");
}
if (Roles.IsUserInRole("Manager"))
{
Response.Redirect("Manager/Default.aspx");
}
}
credo che l'errore sia nella url. Sto lavorando sul codice scaricato dall'articolo indicato nell'oggetto
Grazie
5.610 messaggi dal 09 febbraio 2002
Contributi
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 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
2 messaggi dal 17 novembre 2011
grazie per il suggerimeto

purtroppo non ho potuto ancora provarlo ma ti farò sapere!!!

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC