Io ho fatto in questo modo: ho una pagina MenuAdmin.aspx in una cartella che si chiama admin che si trova in una cartella protetta chiamata Protect; poi ho una pagina per l'utente chiamata MyPage.aspx che si trova nella cartella Protect
Nel webConfig della cartella protetta Protect ho inserito questo:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
poi ho la pagina login.aspx in una cartella che si chiama Site che ha il seguente codice:
Protected Sub btn_login_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_login.Click
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=" + Server.MapPath("..\db\dbNautica.mdb").ToString
Dim myConnection As New OleDbConnection(ConnectionString)
Dim user As String = txtusername.Text
Dim pass As String = txtpassword.Text
Dim sql As String = "SELECT ruolo FROM Utente "
sql = sql + "WHERE NomeUtente = '" + user + "' AND Password = '" + pass + "'"
Dim myCommand As New OleDbCommand(sql, myConnection)
myConnection.Open()
If myCommand.ExecuteScalar = "user" Then
Session("nomeutente") = user
Session("Ruolo") = "user"
FormsAuthentication.Authenticate(user, pass)
FormsAuthentication.RedirectFromLoginPage(user, False)
Dim userIDsql As String
userIDsql = "SELECT ID, Cognome, Nome FROM Utente WHERE NomeUtente = """ + Session("nomeutente") + """;"
Dim command As New OleDbCommand(userIDsql, myConnection)
Dim reader As OleDbDataReader
reader = command.ExecuteReader()
While reader.Read()
Session("IDUtente") = reader.Item(0)
Session("credenzialiUtente") = reader.Item(1) + " " + reader.Item(2)
End While
myConnection.Close()
ElseIf myCommand.ExecuteScalar = "admin" Then
Session("Ruolo") = "admin"
FormsAuthentication.Authenticate(user, pass)
FormsAuthentication.RedirectFromLoginPage(user, False)
Response.Redirect("../Protect/admin/menuAdmin.aspx")
myConnection.Close()
Else
messaggio.Visible = True
messaggio.Text = "Nome utente o password errati."
myConnection.Close()
End If
End Sub
End Class
E infine nel webConfig generale del progetto (non in quello della cartella Site ma quello generale) ho messo questo per l'autenticazione:
<authorization>
<allow users="*" />
</authorization>
<authentication mode="Forms">
<forms loginUrl="Site/Login.aspx" timeout="30" path="/" name="frmAut" defaultUrl="Protect/myPage.aspx" />
</authentication>
Modificato da francy85 il 22 giugno 2009 16.44 -