39 messaggi dal 05 settembre 2008
Ciao a tutti gli amici del forum.
Come ho indicato nel titolo, utilizzo le membership api per controllollare gli accessi alle pagine web, mediante i ruoli e tutto funziona correttamente. Posto un po' di codice del mio web.config
<autorizzation>
<allow roles="Admin"/>
</autorizzation>
<autentication mode="Forms">
.....
.....
</autentication>
<location path="Default.aspx">
<system.web>
   <autorizzation>
      <allow users="*"/>
   </autorizzation>
</system.web>
</location>
<location path="AmministrazioneSito.aspx">
<system.web>
   <autorizzation>
      <allow roles="Admin"/>
   </autorizzation>
</system.web>
</location>
......
......

Se l'utente (appartenente ad esempio al ruolo USER) che ha appena fatto il login prova ad accedere ad una pagina autorizzata soltanto agli appartenenti al ruolo ADMIN viene rimandanto in automatico alla pagina principale, ovvero default.aspx.
E' possibile rimandare l'utente ad una pagina diversa, oppure e' possibile intercettare l'evento (mancata autorizzazione ad accedere) e proporre all'utente stesso un messaggio mediante il quale lo informo di non avere le autorizzazioni necessarie?
Ribadisco che il sistema funziona ovvero l'utente entra solo se autorizzato ad entrare, e viene respinto se non e' autorizzato. Lo scopo e' quello di avvisare l'utente in caso di accesso negato.
Grazie a tutti per la collaborazione.
Marco
5.610 messaggi dal 09 febbraio 2002
Contributi
ciao,

etruria75 ha scritto:

E' possibile rimandare l'utente ad una pagina diversa?

Sì, certo! All'interno di <authentication> puoi inserire l'elemento <forms loginUrl="~/Login.aspx" />
Mediante il suo attributo loginUrl puoi indicare il percorso della pagina al quale deve essere reindirizzato l'utente che non dispone dei privilegi necessari.
Se l'utente è anonimo puoi mostrargli il modulo di login mentre, se era già loggato, gli mostri semplicemente un messaggio tipo "L'accesso alla pagina è riservato". Puoi mettere nella pagina un controllo LoginView che mi sembra appropriato per questo scopo. Qui trovi la documentazione e del codice di esempio:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.loginview.aspx

Un'altra cosa: quando vuoi restringere l'accesso solo a particolari utenti o gruppi di utenti, negli elementi <autorizzation> <authorization> inserisci come ultimo un elemento un <deny users="*" />. Devi esplicitamente negare l'accesso a tutti coloro che non si sono "riconosciuti" in una delle precedenti regole <allow>, altrimenti riusciranno anch'essi ad accedere alla risorsa.

ciao
Modificato da BrightSoul il 16 febbraio 2012 21.14 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
39 messaggi dal 05 settembre 2008
Grazie BrightSoul e scusa se non ti ho risposto subito, ma ho preferito fare alcune prove seguendo i tuoi preziosi e sempre puntuali consigli.
Ho modificato il web.config come di seguito:
  
<authentication mode="Forms">
      <forms name="form1"
             defaultUrl="Default.aspx" 
             loginUrl="AccessoNonAutorizzato.aspx" 
             protection="All" 
             timeout="60" 
             path="/" 
             requireSSL="false" 
             slidingExpiration="false" 
             cookieless="AutoDetect"/>
</authentication>

In realta' ho creato una pagina ad hoc chiamata AccessoNonAutorizzato.aspx dove rimando tutti gli utenti che non sono autorizzati a visualizzare una determinata pagina, mediante loginUrl="AccessoNonAutorizzato.aspx". Ho ritenuto non rimandarli ad una pagina di login poiche' le autorizzazioni agli utenti le fornisco io e so che se un utente non riesce ad accedere ad una determinata pagina e' inutile che faccia un ulteriore login... non entra e basta.
A questo punto ti chiedo: dalla pagina AccessoNonAutorizzato.aspx (presentata a tutti coloro i quali non hanno l'autorizzazione ad accedere in determinate aree del sito) posso farli ritornare all'ultima pagina da essi visitata e autorizzata (mediante un button o altro???)
Se non sono riuscito a spiegarmi, provero' con un esempio....
Grazie, Marco
5.610 messaggi dal 09 febbraio 2002
Contributi
ciao, prego!

etruria75 ha scritto:
posso farli ritornare all'ultima pagina da essi visitata e autorizzata (mediante un button o altro???)


sì, le pagine visitate in precedenza entrano nella "storia" del browser dell'utente. Puoi farlo navigare alla penultima pagina con un bottone tipo questo.
<input type="button" onclick="javascript:history.go(-2);" value="Torna indietro" />

Il bottone non necessita neanche di runat="server" perché la "storia" è un costrutto lato client con cui puoi interagire grazie al javascript.

Questa era una soluzione semplice. Fai dei test per vedere se funziona (forse al posto di -2 devi mettere -1). L'alternativa è quella di memorizzarsi in una variabile di sessione il percorso dell'ultima pagina valida visitata dall'utente. Poi, mostrare il contenuto di questa variabile come href di un link situato nella pagina AccessoNonAutorizzato.aspx.

ciao

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
39 messaggi dal 05 settembre 2008
P E R F E T T O......
come al solito non sbagli un colpo (non avevo dubbi).
Ti confermo che il parametro corretto e' "-1"
onclick="javascript:history.go(-1);" 

Grazie ancora per il prezioso aiuto.
Alla prossima.
Marco

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