geben Werte oder Daten von einer Seite zur anderen, wenn Sie Login-Steuerelement in ASP.NET 2.0 verwenden

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

  •  03-07-2019
  •  | 
  •  

Frage

Ich bin mit Login-Kontrolle in ASP.NET 2.0 in der Login-Seite. Sobald der Benutzer erfolgreich gegen Datenbank authentifiziert ist, ich bin Umleiten des Benutzers Home.aspx. Hier möchte ich auch auf den Namen des Benutzers an die home.aspx übergeben, so dass der Benutzer mit seinen / ihren Namen in der home.aspx begrüßt. Ex: Willkommen Smith

Ich extrahiere den Namen des Benutzers aus der Benutzer-Tabelle in der Datenbank während der Zeit, die ich für die Anmeldedaten überprüfen.

Könnte jemand bitte sagen Sie mir, wie diese in einer sicheren Art und Weise zu tun (nicht zu sichern, aber ein wenig)?

Danke,

War es hilfreich?

Lösung

Ein guter Ort für diese Art von Daten in der Sitzung sein würde. Versuchen Sie so etwas wie dies auf der ersten Seite:

this.Session["UserName"] = userName;

und dann die folgenden Seiten in dieser Sitzung für diesen Benutzer könnten this.Session["UserName"] zugreifen.

Das Beste, was allerdings zu tun, ist eine statische Klasse erstellen Session zu verwalten für Sie so:

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
}

Dann kann Ihre Anwendung Sitzungsstatus wie folgt zugreifen:

SessionManager.UserName

Dies wird Ihnen ein Höchstmaß an Flexibilität und Skalierbarkeit voran.

Andere Tipps

Wenn Sie Standard-asp.net-Authentifizierung nicht verwenden, dann sollten Sie in der Lage sein, die Benutzer über die User-Eigenschaft auf der Seite Objektnamen zugreifen zu können.

User.Identity.Name

Wie Andrew vorgeschlagen, ist Session ein gemeinsamer Ort, um einen Benutzername zu platzieren, obwohl ich überhaupt, wenn möglich, unter Verwendung von Session zu vermeiden.

Sie ein Cookie mit dem Benutzer Namen einstellen könnten.

Sie können auch die DestinationPageUrl Eigenschaft des Anmeldekontrolle stellen Sie den Benutzernamen in der Abfrage-String enthalten. Obwohl sich das anfühlt / sieht ziemlich lahm.

Scotts heißt, wenn Sie die Standard-Login-Steuerelemente verwenden und ein Mitgliedschaftsanbieter diese Information ist Ihnen bereits in User.Identity.Name zur Verfügung.

Der einzige Grund, warum ich eine Antwort bin Entsendung ist es, die Loginname Kontrolle, die Sie auf einer Seite / Masterseite fallen können und haben diese automatisch für Sie erledigt:

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

Dies wird rendern „Willkommen, Zhaph“, wenn der Benutzer angemeldet ist, oder nichts, wenn sie nicht sind.

Sie können dies auch kombinieren ganz gut mit der Loginstatus Kontrollen:

<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" />

Diese Kombination von Kontrollen wird wie folgt vor:

  1. Wenn der Benutzer nicht im Display angemeldet: Registrieren oder Login
  2. Wenn der Benutzer in der Anzeige protokolliert: Willkommen zurück Zhaph - Abmelden

Die Anmeldung Links werden durch die Einstellungen in web.config bevölkert, und die durch die Login Kontrolle.

ja, wie Andrew sagte, Sitzung ist der primäre Ort, um sensible Daten zu speichern.

aber warum Name eines Benutzers ist empfindlich? Sie können es in Cookie speichern und es in Ihrem home.aspx drucken, wenn Benutzer in kommen.

EDIT: Sie können wie die Cookies in ASP.NET verwenden:

// 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);
}

Hinweis: Cookies auf Client-Rechner gespeichert. so sollten Sie sie nicht um sensible Daten zu speichern, verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top