Freigeben über


SqlMembershipProvider.GetUser Methode

Definition

Ruft die Informationen für einen Mitgliedschaftsbenutzer aus der Datenquelle ab.

Überlädt

Name Beschreibung
GetUser(String, Boolean)

Gibt Informationen aus der SQL Server-Mitgliedschaftsdatenbank für einen Benutzer zurück und bietet eine Möglichkeit, den letzten Aktivitäts-Datums-/Uhrzeitstempel für den Benutzer zu aktualisieren.

GetUser(Object, Boolean)

Ruft die Informationen aus der Datenquelle für den Mitgliedschaftsbenutzer ab, der dem angegebenen eindeutigen Bezeichner zugeordnet ist, und aktualisiert den letzten Aktivitäts-Datums-/Uhrzeitstempel für den Benutzer, sofern angegeben.

GetUser(String, Boolean)

Gibt Informationen aus der SQL Server-Mitgliedschaftsdatenbank für einen Benutzer zurück und bietet eine Möglichkeit, den letzten Aktivitäts-Datums-/Uhrzeitstempel für den Benutzer zu aktualisieren.

public:
 override System::Web::Security::MembershipUser ^ GetUser(System::String ^ username, bool userIsOnline);
public override System.Web.Security.MembershipUser GetUser(string username, bool userIsOnline);
override this.GetUser : string * bool -> System.Web.Security.MembershipUser
Public Overrides Function GetUser (username As String, userIsOnline As Boolean) As MembershipUser

Parameter

username
String

Der Name des Benutzers, für den Informationen abgerufen werden sollen.

userIsOnline
Boolean

true um den datums-/zeitstempel der letzten Aktivität für den Benutzer zu aktualisieren; false um Benutzerinformationen zurückzugeben, ohne den datums-/zeitstempel der letzten Aktivität für den Benutzer zu aktualisieren.

Gibt zurück

Ein MembershipUser Objekt, das den angegebenen Benutzer darstellt. Wenn kein Benutzer in der Datenbank für den angegebenen username Wert gefunden wird, null wird dieser zurückgegeben.

Ausnahmen

username überschreitet 256 Zeichen.

- oder -

username enthält ein Komma.

username ist null.

Beispiele

Im folgenden Codebeispiel wird die GetUser Methode verwendet, um zu bestimmen, ob ein Benutzer vorhanden ist, bevor das Kennwort für den Benutzer abgerufen wird.

Hinweis

In diesem Beispiel wird die Membership Klasse verwendet, um die SqlMembershipProvider in der Web.config-Datei angegebene Klasse defaultProvider aufzurufen. Wenn Sie als Typ SqlMembershipProviderauf den Standardanbieter zugreifen müssen, können Sie die Provider Eigenschaft der Membership Klasse umwandeln. Wenn Sie auf andere konfigurierte Anbieter als bestimmten Anbietertyp zugreifen möchten, können Sie über den konfigurierten Namen mit der Providers Eigenschaft der Membership Klasse darauf zugreifen und sie als bestimmten Anbietertyp umwandeln.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Net.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Page_Load(object sender, EventArgs args)
{
  if (!Membership.EnablePasswordRetrieval)
  {
    FormsAuthentication.RedirectToLoginPage();
  }

  Msg.Text = "";

  if (!IsPostBack)
  {
    Msg.Text = "Please enter a user name.";
  }
  else
  {
    VerifyUsername();
  }
}


public void VerifyUsername()
{
    MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false);

    if (user == null)
    {
      Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and re-enter.";

      QuestionLabel.Text = "";
      QuestionLabel.Enabled = false;
      AnswerTextBox.Enabled = false;
      EmailPasswordButton.Enabled = false;
    }
    else
    {
      QuestionLabel.Text = user.PasswordQuestion;
      QuestionLabel.Enabled = true;
      AnswerTextBox.Enabled = true;
      EmailPasswordButton.Enabled = true;
    }
}


public void EmailPassword_OnClick(object sender, EventArgs args)
{
  // Note: Returning a password in clear text using email is not recommended for
  // sites that require a high level of security.

  try
  {
    string password = Membership.Provider.GetPassword(UsernameTextBox.Text, AnswerTextBox.Text);
    MembershipUser u = Membership.GetUser(UsernameTextBox.Text);
    EmailPassword(u.Email, password);
    Msg.Text = "Your password was sent via email.";
  }
  catch (MembershipPasswordException e)
  {
    Msg.Text = "The password answer is incorrect. Please check the value and try again.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = "An error occurred retrieving your password. Please check your values " +
               "and try again.";
  }
}


private void EmailPassword(string email, string password)
{
  try
  {
    MailMessage Message = new MailMessage("administrator", email);
    Message.Subject = "Your Password";
    Message.Body = "Your password is: " + Server.HtmlEncode(password);

    SmtpClient SmtpMail = new SmtpClient("SMTPSERVER");
    SmtpMail.Send(Message);
  }
  catch 
  {
    Msg.Text = "An exception occurred while sending your password. Please try again.";
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Retrieve Password</h3>

  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />

  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />

  Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />

  Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" />
          <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                      ControlToValidate="AnswerTextBox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" Enabled="false" /><br />

  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />

</form>

</body>
</html>

<%@ Page Language="VB" %>

<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Net.Mail" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Public Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)

    If Not Membership.EnablePasswordRetrieval Then
      FormsAuthentication.RedirectToLoginPage()
    End If

    Msg.Text = ""

    If Not IsPostBack Then
      Msg.Text = "Please enter a user name."
    Else
      VerifyUsername()
    End If

  End Sub


  Private Sub VerifyUsername()

    Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)

    If user Is Nothing Then
      Msg.Text = "The user name " & Server.HtmlEncode(UsernameTextBox.Text) & " was not found. Please check the value and re-enter."

      QuestionLabel.Text = ""
      QuestionLabel.Enabled = False
      AnswerTextBox.Enabled = False
      EmailPasswordButton.Enabled = False
    Else
      QuestionLabel.Text = user.PasswordQuestion
      QuestionLabel.Enabled = True
      AnswerTextBox.Enabled = True
      EmailPasswordButton.Enabled = True
    End If

  End Sub


  Public Sub EmailPassword_OnClick(ByVal sender As Object, ByVal args As EventArgs)

    ' Note: Returning a password in clear text using email is not recommended for
    ' sites that require a high level of security.

    Try
      Dim password As String = Membership.Provider.GetPassword(UsernameTextBox.Text, AnswerTextBox.Text)
      Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text)
      EmailPassword(u.Email, password)
      Msg.Text = "Your password was sent via email."
    Catch e As MembershipPasswordException
      Msg.Text = "The password answer is incorrect. Please check the value and try again."
    Catch e As System.Configuration.Provider.ProviderException
      Msg.Text = "An error occurred retrieving your password. Please check your values " & _
                 "and try again."
    End Try

  End Sub


  Private Sub EmailPassword(ByVal email As String, ByVal password As String)

    Try
      Dim Message As MailMessage = New MailMessage("administrator", email)
      Message.Subject = "Your Password"
      Message.Body = "Your password is: " & Server.HtmlEncode(password)
      
      Dim SmtpMail As SmtpClient = New SmtpClient("SMTPSERVER")
      SmtpMail.Send(Message)
    Catch
      Msg.Text = "An exception occurred while sending your password. Please try again."
    End Try

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Sample: Retrieve Password</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      Retrieve Password</h3>
    <asp:Label ID="Msg" runat="server" ForeColor="maroon" /><br />
    Username:
    <asp:TextBox ID="UsernameTextBox" Columns="30" runat="server" AutoPostBack="True" />
    <asp:RequiredFieldValidator ID="UsernameRequiredValidator" runat="server" ControlToValidate="UsernameTextBox"
      ForeColor="red" Display="Static" ErrorMessage="Required" /><br />
    Password Question: <b>
      <asp:Label ID="QuestionLabel" runat="server" /></b><br />
    Answer:
    <asp:TextBox ID="AnswerTextBox" Columns="60" runat="server" Enabled="False" />
    <asp:RequiredFieldValidator ID="AnswerRequiredValidator" runat="server" ControlToValidate="AnswerTextBox"
      ForeColor="red" Display="Static" ErrorMessage="Required" Enabled="False" /><br />
    <asp:Button ID="EmailPasswordButton" Text="Email My Password" OnClick="EmailPassword_OnClick"
      runat="server" Enabled="False" />
  </form>
</body>
</html>

Hinweise

Diese Methode wird von der Membership Klasse aufgerufen, um Benutzerinformationen aus der SQL Server-Datenbank abzurufen, die in der Konfigurationsdatei der ASP.NET Anwendung angegeben ist (Web.config).

Wenn userIsOnline ja true, wird der Datums-/Uhrzeitstempel der letzten Aktivität für den Benutzer auf das aktuelle Datum und die aktuelle Uhrzeit aktualisiert. Dies wird in den LastActivityDate Und IsOnline Eigenschaften und in dem wert widergespiegelt, der von GetNumberOfUsersOnline.

Führende und nachfolgende Leerzeichen werden aus dem username Parameterwert gekürzt.

Weitere Informationen

Gilt für:

GetUser(Object, Boolean)

Ruft die Informationen aus der Datenquelle für den Mitgliedschaftsbenutzer ab, der dem angegebenen eindeutigen Bezeichner zugeordnet ist, und aktualisiert den letzten Aktivitäts-Datums-/Uhrzeitstempel für den Benutzer, sofern angegeben.

public:
 override System::Web::Security::MembershipUser ^ GetUser(System::Object ^ providerUserKey, bool userIsOnline);
public override System.Web.Security.MembershipUser GetUser(object providerUserKey, bool userIsOnline);
override this.GetUser : obj * bool -> System.Web.Security.MembershipUser
Public Overrides Function GetUser (providerUserKey As Object, userIsOnline As Boolean) As MembershipUser

Parameter

providerUserKey
Object

Der eindeutige Bezeichner des Benutzers.

userIsOnline
Boolean

trueum den Datums-/Uhrzeitstempel der letzten Aktivität für den angegebenen Benutzer zu aktualisieren; andernfalls . false

Gibt zurück

Ein MembershipUser Objekt, das den Benutzer darstellt, der dem angegebenen eindeutigen Bezeichner zugeordnet ist. Wenn kein Benutzer in der Datenbank für den angegebenen providerUserKey Wert gefunden wird, null wird dieser zurückgegeben.

Ausnahmen

providerUserKey ist null.

providerUserKey ist nicht vom Typ Guid.

Hinweise

GetUser ruft die Benutzerinformationen aus der Datenquelle ab und erstellt ein MembershipUser Objekt, das mit den zurückgegebenen Daten aufgefüllt wird. Der Benutzer wird mithilfe des eindeutigen Bezeichners identifiziert, der mit dem providerUserKey Parameter angegeben ist.

Weitere Informationen

Gilt für: