118 messaggi dal 12 marzo 2001
Ciao a tutti,

sono a buon punto nella creazione di un mio database di utenti abbastanza avanzato, nel farlo, però, mi sono appena accorto di una cosa...

Una volta riconosciuto l'utente, e il suo "livello" (dal quale dipende il numero di cose che può fare. Ad es. il liv. 0 è l'utente normale che può accedere solo all'area riservata del sito, il liv. 9 è l'amministratore che può, volendo, anche rimuovere gli utenti dal suo database), mi sono trovato di fronte ad un problemaccio al quale non avevo ancora pensato.

L'utente che viene riconosciuto, va nell'area riservata che è, per esempio la pagina: http://www.2web.it/claudio/X-Db/areariservata/blablabla/accesso.asp

Ora... metti caso che un navigatore qualsiasi trova questo link da qualche parte, magari sul sito di qualcun altro, e ci preme sopra.

Questo sconosciuto riuscirà ad accedere alla pagina accesso.asp come un qualsiasi utente registrato nel database, basta sapere esattamente il percorso della pagina.

Invece, sui database seri, se si va in una pagina login.asp c'è una chiara risposta che ti dice "devi eseguire il login prima di entrare qui".

Mi chiedo... come si fa?!!

In pratica ho messo quasi a punto la parte più difficile: la gestione di un intero database, però mi son dimenticato la parte più importante: gestire l'area riservata :P

Un grazie di cuore a chiunque mi svelerà l'enigma.

Ciao

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio
6 messaggi dal 09 febbraio 2002
Ciao, spero che capirai  .
Dunque prima di tutto scarica questo zip. Sono tre include, che devi appunto includere nelle pagine che vuoi proteggere. Poi devi aggiungere alcune righe di codice alla pagina in asp che processa il login (ad esempio io ho validate.asp, che controlla i dati inseriti nel form del login. Io uso VBScript.) Aggiungo dei commenti ( /* inizio commento - */ fine commento) per farti capire meglio :

<code>
&lt;%@Language=VBScript%&gt;
&lt;%Response.Buffer = True%&gt;
&lt;!--#INCLUDE FILE="config.inc"--&gt; /* E' il file di inclusione dove c'è la path al database. */

&lt;html&gt;
&lt;body&gt;

&lt;%
Nickname = Replace(Trim(Request.Form("nickname")), "'", "''")
Password = Replace(Trim(Request.Form("password")), "'", "''")

If Nickname = "" OR Password = "" Then Response.Redirect "/admin/default.asp" /* se la login è sbagliata o contiene campi vuoti riporta alla pagina di login. Puoi anche reindirizzare a una pagina che dice login errato, ecc... */

SQL = "Select id, nickname, [password], clearance From profili" /* Qui richiama i dati nel database per confrontarli con quelli inseriti nel login. clearance è il livello dell'utente, che io imposto da un pannello di controllo. */
Set RS = MyConn.Execute(SQL)

While Not RS.EOF
If Nickname = RS("nickname") And Password = RS("password") Then
Session("allow") = True
Session("clearance") = RS("Clearance")
Level = RS("Clearance")
End If
RS.MoveNext
Wend
/* Qui se la login e la pass sono corretti, imposta "allow" (che sarebbe la variabile per il riconoscimento del login) a true (dai un'occhiata negli include che hai scaricato)

CleanUp(RS) /* routine definita in config.inc che hai scaricato */

If Session("allow") = True Then
If Level = 3 Then Response.Redirect "/admin/admin.asp"
If Level &lt; 3 Then Response.Redirect "/admin/admin2.asp"
Else
Response.Redirect "/admin/default.asp"
End If
%&gt;
/* Qui se il login ha avuto successo reindirizza alle pagine di amministrazione (io uso il logni per questo, ma tu puoi anche reindirizzare a qualunque altra area). Se il login non ha avuto successo torna alla pagina di login. */

&lt;/body&gt;
&lt;/html&gt;
</code>

Spero sia chiaro, altrimenti contattami pure via icq o email.
Ciao
118 messaggi dal 12 marzo 2001
Ho visto il tuo codice ed è interessante, ma a me non serve una pagina di login. Quella l'ho già fatta ed il pezzo principale è questo:

<code>

Set objConn = CreateObject("ADODB.Connection")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DbPath & "X-Db.mdb"))

on error resume next 'Se non riusciamo a trovare la UserID, visualizziamolo!'

Set Stringa = objConn.Execute("SELECT * from UserTab WHERE UserID = '" & UserName & "' and Passwd = '" & Password & "'")

response.write "Benvenuto, " & Stringa("UserID") & "&lt;br&gt;&lt;br&gt;Entro 5 secondi verrai reindirizzato nell'area riservata!"

if Err.Number &lt;&gt; 0 Then
response.write "L'utente non è stato trovato! Per iscriversi &lt;a href=""signin.asp"" target=""_self""&gt;premere qui&lt;/a&gt;, per tornare indietro &lt;a href=""javascript:history.back()""&gt;premere qui&lt;/a&gt;"
else

Select Case (Stringa("Livello"))

Case 1 : Response.redirect ("Panel.asp?Verified=yes&Livello=1") 'Livello 1 -&gt; Utente '
Case 8 : Response.redirect ("Panel.asp?Verified=yes&Livello=8") 'Livello 8 -&gt; Co-Admin '
Case 9 : Response.redirect ("Panel.asp?Verified=yes&Livello=9") 'Livello 9 -&gt; Admin '

End Select
</code>

Non ho capito come tu associ quello che mi hai mandato a ogni pagina. O forse intendi dire che ogni collegamento poi lo dovrei fare con il passaggio di parametri allow e clearance?

(cmq level1.inc e level3.inc sono quasi uguali eh)

Grazie 1000 per la risposta veloce :)

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio
6 messaggi dal 09 febbraio 2002
Basta che includi quei file nelle pagine che vuoi proteggere, così:
<code>
&lt;!--#INCLUDE FILE="config.inc"--&gt;
&lt;!--#INCLUDE FILE="level3.inc"--&gt;
</code>
Così ad esempio possono accedere solo gli utenti con livello 3.
Il codice che ho messo io lo devi aggiungere alla pagina di login, naturalmente lo devi cambiare secondo le tue esigenze. Comunque la parte più importante è questo pezzo :

<code>
While Not RS.EOF
If Nickname = RS("nickname") And Password = RS("password") Then
Session("allow") = True
Session("clearance") = RS("Clearance")
Level = RS("Clearance")
End If
</code>

che accetta il login e setta Session("allow") a true, cioè permette agli utenti di accedere alle pagine protette.
118 messaggi dal 12 marzo 2001
Si, ma quando passi da una pagina all'altra, anche che hanno il controllo con l'if, come fai a dirgli che comunque devono avere l'autorizzazione? Un link qualsiasi per esempio deve essere:

ciccio.asp?allow=true&clearance=1

hm?

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio
118 messaggi dal 12 marzo 2001
Inoltre non avrebbe senso inserire config.inc che fa solo una connessione al database

Devo forse capire l'importanza del Session("Allow") = True e del Clearance, che sono istruzioni e funzioni che non avevo mai visto prima...

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio
118 messaggi dal 12 marzo 2001
Vorrei portare su questo topic anzichè iniziarne un altro perchè così evito il crossposting? (l'ho inventato tutto io, da solo, questo termine eh!) e il problema è ben chiaro sopra...

Bè, vorrei saperne di più circa il Session("Clearance") e Session("Allow"). Sulla rete non ho trovato granchè come informazioni, per non dire nessuna...

Qualcuno ha idee?

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio
118 messaggi dal 12 marzo 2001
Ho appena trovato quello che cercavo. Scemo io, avevo la soluzione sotto al naso:

http://www.aspitalia.com/articoli/session.asp

:P

Solo non ho capito una cosa... una volta che l'ID è stata memorizzata nella cookie, poi una volta chiuso il browser la cookie viene cancellata?

Ciao ciao

--
Claudio a.k.a. Xelloss
Webmaster di: www.2web.it
My Homepage: www.2web.it/claudio

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.