115 messaggi dal 25 giugno 2008
Ciao ragazzi..ho un piccolo problema con la mia pagina admin.
Praticamente ho due menu uno per l'admin e uno per l'utente...cosa mi succede?? che quando accedo come admin e quindi accedo alla mia pagina personale è tutto apposto..però se dovessi spostarmi in altre sezioni e poi ritornare alla pagina personale, non mi da + quella dell'admin ma mi da quella dell'utente..come posso risolvere questo problema???
115 messaggi dal 25 giugno 2008
nessuno mi sa aiutare in merito???
Cosa usi per differenziare la visualizzazione del menu per admin o per lo user?

Ciao

Il mio blog
Homepage
115 messaggi dal 25 giugno 2008
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 -
Allora non ho capito. Tu differenzi i menu in base alle pagine su cui vai a navigare, che sono protette.
Ma tu dici "però se dovessi spostarmi in altre sezioni e poi ritornare alla pagina personale, non mi da + quella dell'admin ma mi da quella dell'utente"
Non decidi tu tramite i menu come navigare tra le pagine?

Ciao

Il mio blog
Homepage
115 messaggi dal 25 giugno 2008
mmm..allora ti dico subito che sono principiante in asp.net quindi questo progetto che ho fatto è stato il primo ecco perchè forse può risultare non perfetto....
cmq la navigazione all'interno delle pagine l'ho decisa attraverso web.sitemap che è il seguente:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="HomePage.aspx" title="HOME"  description="Nuova Nautica">
      <siteMapNode url="Site/Login.aspx" title ="LOGIN" description="Effettua l'accesso">
        <siteMapNode url="Site/Registrazione.aspx" title="REGISTRATI" description="Registrati ora per prenotare un noleggio"/>
        <siteMapNode url="Protect/myPage.aspx" title="PAGINA PERSONALE" description="Riepilogo dati personali"/>
      </siteMapNode>
      <siteMapNode url="Site/Officina.aspx" title="OFFICINA"  description="Chi siamo" />
      <siteMapNode url="Site/Servizi.aspx" title="SERVIZI"  description="I nostri servizi">
        <siteMapNode url="Site/Vendita.aspx" title="VENDITA"  description="Visualizza le imbarcazioni in vendita">
          <siteMapNode url="Site/GommoniVendita.aspx" title="GOMMONI" description="Visualizza i gommoni in vendita"/>
          <siteMapNode url="Site/BarcheVendita.aspx" title="BARCHE" description="Visualizza le barche a motore in vendita"/>
        </siteMapNode>
        <siteMapNode url="Site/Noleggio.aspx" title="NOLEGGIO"  description="Visualizza le imbarcazioni disponibili per il noleggio">
          <siteMapNode url="Site/GommoniNoleggio.aspx" title="GOMMONI" description="Visualizza i gommoni disponibili per il noleggio"/>
          <siteMapNode url="Site/BarcheNoleggio.aspx" title="BARCHE" description="Visualizza le barche a motore disponibili per il noleggio"/>
          <siteMapNode url="Protect/PrenotaNoleggio.aspx" title="PRENOTA" description="Prenota il noleggio di una delle imbarcazioni disponibili presso la nostra azienda"/>
        </siteMapNode>
      </siteMapNode>
      <siteMapNode url="Site/Contatti.aspx" title="CONTATTI"  description="Come contattarci e raggiungerci" />
    </siteMapNode>
</siteMap>


Non so magari con questo codice ti è più facile capire come è strutturato il sito e la navigazione delle pagine...
Mi sembra di vedere che nel sitemap tu navighi sempre su Protect/myPage.aspx e non c'è riferimento a MenuAdmin.aspx. Per questo credo che una volta entrato è vero che tu redirigi l'utente su MenuAdmin.aspx ma poi non può più ritorntarci.
Non puoi usare sempre la stessa pagina myPage.aspx ma differenziare i contenuti con LoginView? Oppure abilita il sitemap basato sui ruoli così puoi differenziare le voci di menu a seconda dei ruoli come qua
http://www.aspitalia.com/script/903/Applicare-Policy-Ruoli-SiteMap.aspx anche se dovresti cambiare il tuo metodo di autenticazione. Non devi usare la session (che tra l'altro è poco performante) ma usare un role provider.
Guarda qua
http://www.aspitalia.com/articoli/asp.net2/architettura_provider.aspx

Ciao

Il mio blog
Homepage
115 messaggi dal 25 giugno 2008
mmmm..quindi di preciso cosa dovrei cambiare nel codice??? scusami ma non ho capito bene quello ke mi hai consigliato, il role provider...

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.