다음을 통해 공유


SqlMembershipProvider.GetUser 메서드

정의

데이터 원본에서 멤버 자격 사용자에 대한 정보를 가져옵니다.

오버로드

Name Description
GetUser(String, Boolean)

사용자에 대한 SQL Server 멤버 자격 데이터베이스의 정보를 반환하고 사용자의 마지막 활동 날짜/타임스탬프를 업데이트하는 옵션을 제공합니다.

GetUser(Object, Boolean)

지정된 고유 식별자와 연결된 멤버 자격 사용자에 대한 데이터 원본의 정보를 가져오고 지정된 경우 사용자의 마지막 활동 날짜/타임스탬프를 업데이트합니다.

GetUser(String, Boolean)

사용자에 대한 SQL Server 멤버 자격 데이터베이스의 정보를 반환하고 사용자의 마지막 활동 날짜/타임스탬프를 업데이트하는 옵션을 제공합니다.

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

매개 변수

username
String

정보를 가져올 사용자의 이름입니다.

userIsOnline
Boolean

true 사용자의 마지막 활동 날짜/타임스탬프를 업데이트하려면 false 사용자의 마지막 활동 날짜/타임스탬프를 업데이트하지 않고 사용자 정보를 반환합니다.

반품

MembershipUser 지정된 사용자를 나타내는 개체입니다. 데이터베이스에서 지정된 usernamenull 에 대한 사용자를 찾을 수 없으면 반환됩니다.

예외

username 가 256자를 초과합니다.

-또는-

username 에는 쉼표가 포함되어 있습니다.

usernamenull입니다.

예제

다음 코드 예제에서는 메서드를 GetUser 사용 하 여 사용자의 암호를 검색 하기 전에 사용자가 있는지 여부를 확인 합니다.

메모

이 예제에서는 클래스를 Membership 사용하여 Web.config 파일에서 지정된 defaultProvider 클래스를 호출 SqlMembershipProvider 합니다. 기본 공급자에 형식 SqlMembershipProvider으로 액세스해야 하는 경우 클래스의 속성을 캐스팅할 ProviderMembership 수 있습니다. 특정 공급자 유형으로 구성된 다른 공급자에 액세스하려면 클래스의 Membership 속성을 사용하여 구성된 이름으로 Providers 액세스하여 특정 공급자 유형으로 캐스팅할 수 있습니다.

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

설명

이 메서드는 ASP.NET 애플리케이션의 구성 파일(Web.config)에 지정된 SQL Server 데이터베이스에서 사용자 정보를 검색하기 위해 클래스에서 호출 Membership 됩니다.

true경우 userIsOnline 사용자의 마지막 활동 날짜/타임스탬프는 현재 날짜 및 시간으로 업데이트됩니다. 이 값은 및 속성 및 IsOnline 반환된 값에 반영 LastActivityDate 됩니다GetNumberOfUsersOnline.

선행 및 후행 공백은 매개 변수 값에서 username 잘립니다.

추가 정보

적용 대상

GetUser(Object, Boolean)

지정된 고유 식별자와 연결된 멤버 자격 사용자에 대한 데이터 원본의 정보를 가져오고 지정된 경우 사용자의 마지막 활동 날짜/타임스탬프를 업데이트합니다.

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

매개 변수

providerUserKey
Object

사용자의 고유 식별자입니다.

userIsOnline
Boolean

true지정된 사용자의 마지막 작업 날짜/타임스탬프를 업데이트하려면 다음을 실행합니다. 그렇지 않으면 . false

반품

MembershipUser 지정된 고유 식별자와 연결된 사용자를 나타내는 개체입니다. 데이터베이스에서 지정된 providerUserKeynull 에 대한 사용자를 찾을 수 없으면 반환됩니다.

예외

providerUserKeynull입니다.

providerUserKey 가 형식 Guid이 아닙니다.

설명

GetUser 는 데이터 원본에서 사용자 정보를 검색하고 반환된 데이터로 채워진 개체를 만듭니다 MembershipUser . 사용자는 매개 변수로 지정된 고유 식별자를 사용하여 식별됩니다 providerUserKey .

추가 정보

적용 대상