passare valori o dati da una pagina all'altra quando si utilizza il controllo Login in ASP.NET 2.0

StackOverflow https://stackoverflow.com/questions/620134

  •  03-07-2019
  •  | 
  •  

Domanda

Sto usando il controllo di accesso disponibile in ASP.NET 2.0 nella pagina di accesso. Una volta che l'utente è autenticato correttamente con il database, sto reindirizzando l'utente su home.aspx. Qui, voglio passare anche il nome dell'utente a home.aspx in modo che l'utente venga accolto con il suo nome in home.aspx. Es: Benvenuto Smith

Sto estraendo il nome dell'utente dalla tabella degli utenti nel mio database durante il periodo in cui controllo le credenziali di accesso.

Qualcuno potrebbe dirmi come farlo in modo sicuro (potrebbe non essere sicuro, ma un po ')?

Grazie,

È stato utile?

Soluzione

Un buon posto per quel tipo di dati sarebbe nella sessione. Prova qualcosa di simile nella prima pagina:

this.Session["UserName"] = userName;

e quindi le pagine successive in quella sessione per quell'utente potrebbero accedere a this.Session [" UserName "] .

La cosa migliore da fare è creare una classe statica per gestire Session in questo modo:

using System;
using System.Web;

static class SessionManager
{
    public static String UserName
    {
        get
        {
            return HttpContext.Current.Session["UserName"].ToString();
        }
        set
        {
            HttpContext.Current.Session["UserName"] = value;
        }
    }

        // add other properties as needed
}

Quindi l'applicazione può accedere allo stato della sessione in questo modo:

SessionManager.UserName

Questo ti darà la massima flessibilità e scalabilità andando avanti.

Altri suggerimenti

Se si utilizza l'autenticazione asp.net standard, si dovrebbe essere in grado di accedere al nome dell'utente tramite la proprietà Utente dell'oggetto pagina.

User.Identity.Name

Come suggerito da Andrew, Session è un luogo comune dove posizionare un nome utente, anche se evito di usare la sessione, se possibile.

È possibile impostare un cookie con il nome dell'utente.

È inoltre possibile impostare la proprietà DestinationPageUrl del controllo di accesso in modo da includere il nome utente nella stringa di query. Anche se sembra / sembra piuttosto zoppo.

As ScottS ha detto, se si utilizzano i controlli di accesso standard e un provider di appartenenze, queste informazioni sono già disponibili in User.Identity.Name.

L'unica ragione per cui sto postando una risposta è menzionare la controllo LoginName , che puoi rilasciare su una pagina / pagina principale e fare questo automaticamente per te:

<asp:LoginName id="LoginName1" runat="server" FormatString ="Welcome, {0}" />

Questo renderà " Benvenuto, Zhaph " quando l'utente ha effettuato l'accesso o nulla in caso contrario.

Puoi anche combinarlo abbastanza bene con LoginView e LoginStatus controlli:

<asp:LoginView ID="RegisterLink" runat="server">
  <AnonymousTemplate>
    <div class="titleRegistration">
      <a href="/Users/Register.aspx">Register</a> or 
    </div>
  </AnonymousTemplate>
  <LoggedInTemplate>
    <div class="titleRegistration">
      Welcome back
        <asp:LoginName ID="LoginName1" runat="server" /> -
    </div>
  </LoggedInTemplate>
</asp:LoginView>
<asp:LoginStatus ID="lsGeneral" runat="server"
  LogoutPageUrl="/Users/Logout.aspx" />

Questa combinazione di controlli eseguirà le seguenti operazioni:

  1. Se l'utente non ha effettuato l'accesso, visualizzare: Registrati o Accedi
  2. Se l'utente è loggato sul display: Bentornato Zhaph - Logout

I collegamenti di accesso sono popolati dalle impostazioni in web.config e generati dal controllo LoginStatus.

sì, come ha detto Andrew, la sessione è il luogo principale in cui archiviare i dati sensibili.

ma perché il nome di un utente è sensibile? Puoi salvarlo nei cookie e stamparlo in home.aspx ogni volta che l'utente entra.

MODIFICA: Puoi utilizzare i cookie in ASP.NET in questo modo:

// Setting cookie : 
Response.Cookies["UserName"].Value = "Erhan";
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(7); // Persists 1 week

// Getting cookie : 
string username = string.Empty;
if(Request.Cookies["UserName"] != null)
{
    username = Server.HtmlEncode(Request.Cookies["UserName"].Value);
}

NOTA: cookie memorizzati sul computer del cliente. quindi non dovresti usarli per archiviare dati sensibili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top