ASP: autenticazione tramite password

di il
3 risposte

ASP: autenticazione tramite password

Ho realizzato un sito che prevede l'accesso tramite autenticazione mediante l'inserimento di una username ed una password.
Per realizzare il codice ASP delle pagine che si occupano dell'autenticazione ho utilizzato Dreamweaver, che mi ha generato automaticamente il seguente codice:


<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<!--#include file="mioDatabase.asp" -->
<%
// *** Validate request to log in to this site.
var MM_LoginAction = Request.ServerVariables("URL");
if (Request.QueryString!="") MM_LoginAction += "?" + Request.QueryString;
var MM_valUsername=String(Request.Form("nome"));
if (MM_valUsername != "undefined") {
var MM_fldUserAuthorization="LivelloUtente";
var MM_redirectLoginSuccess="../html/asa.htm";
var MM_redirectLoginFailed="erroreitalianostart.asp";
var MM_flag="ADODB.Recordset";
var MM_rsUser = Server.CreateObject(MM_flag);
MM_rsUser.ActiveConnection = MM_mioDatabase_STRING;
MM_rsUser.Source = "SELECT UserNameUtente, PasswordUtente";
if (MM_fldUserAuthorization != "") MM_rsUser.Source += "," + MM_fldUserAuthorization;
MM_rsUser.Source += " FROM Utente WHERE UserNameUtente='" + MM_valUsername.replace(/'/g, "''") + "' AND PasswordUtente='" + String(Request.Form("password")).replace(/'/g, "''") + "'";
MM_rsUser.CursorType = 0;
MM_rsUser.CursorLocation = 2;
MM_rsUser.LockType = 3;
MM_rsUser.Open();
if (!MM_rsUser.EOF || !MM_rsUser.BOF) {
// username and password match - this is a valid user
Session("MM_Username") = MM_valUsername;
if (MM_fldUserAuthorization != "") {
Session("MM_UserAuthorization") = String(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value);
} else {
Session("MM_UserAuthorization") = "";
}
if (String(Request.QueryString("accessdenied")) != "undefined" && false) {
MM_redirectLoginSuccess = Request.QueryString("accessdenied");
}
MM_rsUser.Close();
Response.Redirect(MM_redirectLoginSuccess);
}
MM_rsUser.Close();
Response.Redirect(MM_redirectLoginFailed);
}
%>


Questo invece è il codice che Dreamweaver mi ha inserito nelle pagine che desidero proteggere:


<%@LANGUAGE="JAVASCRIPT"%>
<%
// *** Restrict Access To Page: Grant or deny access to this page
var MM_authorizedUsers="cliente,tecnico,admin";
var MM_authFailedURL="../../../asp/erroreitaliano.asp";
var MM_grantAccess=false;
if (String(Session("MM_Username")) != "undefined") {
if (false || (String(Session("MM_UserAuthorization"))=="") || (MM_authorizedUsers.indexOf(String(Session("MM_UserAuthorization"))) >=0)) {
MM_grantAccess = true;
}
}
if (!MM_grantAccess) {
var MM_qsChar = "?";
if (MM_authFailedURL.indexOf("?") >= 0) MM_qsChar = "&";
var MM_referrer = Request.ServerVariables("URL");
if (String(Request.QueryString()).length > 0) MM_referrer = MM_referrer + "?" + String(Request.QueryString());
MM_authFailedURL = MM_authFailedURL + MM_qsChar + "accessdenied=" + Server.URLEncode(MM_referrer);
Response.Redirect(MM_authFailedURL);
}
%>


Vorrei modificare il codice ASP in modo da verificare 3 variabili invece delle attuali 2 (username e password).

Chi mi aiuta?

Un saluto

3 Risposte

  • Re: ASP: autenticazione tramite password

    Non so se ho capito bene ma credo che basti aggiungere la terza variabile e fare l'identificazione con un semplice AND
    poi ti ripeto magari non ho capito bene il problema
  • Re: ASP: autenticazione tramite password

    Innanzitutto grazie 1000 per la tua risposta!
    Come avrai capito non conosco l'ASP perciò sto cercando di cogliere l'occasione per imparare qualcosa.

    Approfittando ulteriormente della tua disponibilità vorrei sottoporti alcuni ulteriori dettagli:

    Vorrei specificare che la terza variabile da controllare non proviene da dati immessi dall'utente, ma da un database, secondo questo schema:

    ID User Pass P1 P2 P3
    01 Usr1 Psw1 Si No Si
    02 Usr2 Psw2 No Si No
    03 Usr3 Psw3 Si No No

    Quando si cerca di aprire la pagina "P1" viene controllato se l'utente loggato, in corrispondenza della sua riga e della colonna "P1", il valore memorizzato corrisponda a "Si" (o "vero" o quantaltro).

    Questo tipo di gestione degli accessi ci permetterebbe due vantaggi:
    -un controllo più flessibile dei permessi, rispetto al tradizionale sistema di gestione a "livelli"
    -una sola immissione dei dati per tutte le pagine

    E' possibile?

    Un saluto e grazie ancora per la tua disponibilità!! :o)
  • Re: ASP: autenticazione tramite password

    La cosa non dovrebbe essere molto difficile.
    dovresti soltanto controllare il valore della terza variabile in un modo del genere
    if (variabile1==ok and variabile2==ok){
    if (variabile3==ok){
    accedi
    }
    else
    no
    }

    questo è il ragionamento che dovrebbe servirti
    prova tu a tradurlo in asp

    io non lavoro moltissimo in questo linguaggio preferisco php comunque una volta ho fatto una cosa del genere.
    in pratica ho fatto un modulo di autenticazione con password cifrata e cookies.
    ciao
Devi accedere o registrarti per scrivere nel forum
3 risposte