Udostępnij za pośrednictwem


SqlMembershipProvider.GetUser Metoda

Definicja

Pobiera informacje dla użytkownika członkostwa ze źródła danych.

Przeciążenia

Nazwa Opis
GetUser(String, Boolean)

Zwraca informacje z bazy danych członkostwa programu SQL Server dla użytkownika i udostępnia opcję zaktualizowania ostatniej sygnatury daty/godziny działania dla użytkownika.

GetUser(Object, Boolean)

Pobiera informacje ze źródła danych użytkownika członkostwa skojarzonego z określonym unikatowym identyfikatorem i aktualizuje ostatnią datę/godzinę działania dla użytkownika, jeśli zostanie określony.

GetUser(String, Boolean)

Zwraca informacje z bazy danych członkostwa programu SQL Server dla użytkownika i udostępnia opcję zaktualizowania ostatniej sygnatury daty/godziny działania dla użytkownika.

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

Parametry

username
String

Nazwa użytkownika, dla których mają być uzyskiwane informacje.

userIsOnline
Boolean

true zaktualizować datę/godzinę ostatniego działania dla użytkownika; false aby zwrócić informacje o użytkowniku bez aktualizowania ostatniej sygnatury daty/godziny działania dla użytkownika.

Zwraca

MembershipUser Obiekt reprezentujący określonego użytkownika. Jeśli żaden użytkownik nie zostanie znaleziony w bazie danych dla określonej username wartości, null zostanie zwrócony.

Wyjątki

username przekracza 256 znaków.

— lub —

username zawiera przecinek.

Parametr username ma wartość null.

Przykłady

W poniższym przykładzie kodu użyto GetUser metody w celu określenia, czy użytkownik istnieje przed pobraniem hasła użytkownika.

Uwaga / Notatka

W tym przykładzie użyto Membership klasy do wywołania określonego SqlMembershipProvider elementu jako defaultProvider w pliku Web.config. Jeśli musisz uzyskać dostęp do domyślnego dostawcy jako typu SqlMembershipProvider, możesz rzutować Provider właściwość Membership klasy. Aby uzyskać dostęp do innych skonfigurowanych dostawców jako określonego typu dostawcy, możesz uzyskać do nich dostęp według ich skonfigurowanej nazwy z właściwością ProvidersMembership klasy i rzutować je jako określony typ dostawcy.

<%@ 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>

Uwagi

Ta metoda jest wywoływana przez klasę w celu pobrania informacji o użytkowniku Membership z bazy danych programu SQL Server określonej w pliku konfiguracji aplikacji ASP.NET (Web.config).

Jeśli userIsOnline to true, ostatnia sygnatura daty/godziny działania dla użytkownika jest aktualizowana do bieżącej daty i godziny. Jest to odzwierciedlone we właściwościach LastActivityDate i IsOnline i w wartości zwracanej przez GetNumberOfUsersOnlineelement .

Spacje wiodące i końcowe są przycinane z wartości parametru username .

Zobacz też

Dotyczy

GetUser(Object, Boolean)

Pobiera informacje ze źródła danych użytkownika członkostwa skojarzonego z określonym unikatowym identyfikatorem i aktualizuje ostatnią datę/godzinę działania dla użytkownika, jeśli zostanie określony.

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

Parametry

providerUserKey
Object

Unikatowy identyfikator użytkownika.

userIsOnline
Boolean

true aby zaktualizować sygnaturę daty/godziny ostatniego działania dla określonego użytkownika; w przeciwnym razie, false.

Zwraca

MembershipUser Obiekt reprezentujący użytkownika skojarzonego z określonym unikatowym identyfikatorem. Jeśli żaden użytkownik nie zostanie znaleziony w bazie danych dla określonej providerUserKey wartości, null zostanie zwrócony.

Wyjątki

Parametr providerUserKey ma wartość null.

providerUserKey nie jest typu Guid.

Uwagi

GetUser pobiera informacje o użytkowniku ze źródła danych i tworzy MembershipUser obiekt wypełniony zwróconymi danymi. Użytkownik jest identyfikowany przy użyciu unikatowego identyfikatora określonego za pomocą parametru providerUserKey .

Zobacz też

Dotyczy