Membership.GetUser 方法

定義

從資料來源取得成員資格使用者的資訊。

多載

GetUser(String, Boolean)

從資料來源取得指定成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

GetUser(Object, Boolean)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

GetUser(String)

從資料來源取得指定成員資格使用者的資訊。

GetUser(Boolean)

從資料來源取得目前登入成員資格使用者的資訊。 如果已指定,會為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

GetUser()

從資料來源取得資訊,並為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

GetUser(Object)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。

GetUser(String, Boolean)

從資料來源取得指定成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

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

參數

username
String

要擷取的使用者名稱。

userIsOnline
Boolean

如果 true,則更新指定使用者的最後活動日期/時間戳記。

傳回

MembershipUser 物件,表示指定的使用者。 如果 username 參數未對應現有的使用者,此方法會傳回 null

例外狀況

username 包含逗號 (,)。

usernamenull

範例

下列程式碼範例會擷取指定使用者名稱的密碼,並將其傳送至指定使用者的電子郵件地址。 的呼叫 GetUser 會指定不會更新使用者的最後一個活動日期/時間戳記。

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

備註

方法 GetUser 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。

如果您使用其中一個不採用 username 參數的多 GetUser 載,則 GetUser 傳回目前登入成員資格使用者的資訊。 目前的登入成員資格使用者是由 Name 目前 HttpContext 中使用者的 識別。

您也可以指定是否要 GetUser 針對使用 參數擷取 userIsOnline 的使用者更新上次活動日期/時間戳記。 GetUser對於不採用 userIsOnline 參數的多載, Membership.GetUser 會隱含更新使用者的最後一個活動日期/時間戳記。 Membership.GetUserGetUser 不行。

另請參閱

適用於

GetUser(Object, Boolean)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。 如果已指定,則更新使用者的最後活動日期/時間戳記。

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

參數

providerUserKey
Object

使用者成員資格資料來源中的唯一使用者識別項。

userIsOnline
Boolean

如果 true,則更新指定使用者的最後活動日期/時間戳記。

傳回

MembershipUser 物件,表示與指定唯一識別項相關聯的使用者。

例外狀況

providerUserKeynull

備註

方法 GetUser 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。 使用者會使用 參數中指定的 providerUserKey 資料來源的唯一識別碼來識別。

另請參閱

適用於

GetUser(String)

從資料來源取得指定成員資格使用者的資訊。

public:
 static System::Web::Security::MembershipUser ^ GetUser(System::String ^ username);
public static System.Web.Security.MembershipUser GetUser (string username);
static member GetUser : string -> System.Web.Security.MembershipUser
Public Shared Function GetUser (username As String) As MembershipUser

參數

username
String

要擷取的使用者名稱。

傳回

MembershipUser 物件,表示指定的使用者。 如果 username 參數未對應現有的使用者,此方法會傳回 null

例外狀況

username 包含逗號 (,)。

usernamenull

範例

下列程式碼範例會 GetUser 使用 方法來傳回 MembershipUser 目前登入使用者的物件,並更新使用者的電子郵件地址。

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

MembershipUser u;

public void Page_Load(object sender, EventArgs args)
{
  u = Membership.GetUser(User.Identity.Name);

  if (!IsPostBack)
  {
    EmailTextBox.Text = u.Email; 
  }
}

public void UpdateEmailButton_OnClick(object sender, EventArgs args)
{
  try
  {
    u.Email = EmailTextBox.Text;

    Membership.UpdateUser(u);
  
    Msg.Text = "User email updated.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = e.Message;
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Update User E-Mail</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Update E-Mail Address for <%=User.Identity.Name%></h3>

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

  <table cellpadding="3" border="0">
    <tr>
      <td>Email Address:</td>
      <td><asp:TextBox id="EmailTextBox" MaxLength="128" Columns="30" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server"
                                    ControlToValidate="EmailTextBox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="UpdateEmailButton" 
                      Text="Update Email" 
                      OnClick="UpdateEmailButton_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>

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

Dim u As MembershipUser

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

  u = Membership.GetUser(User.Identity.Name)

  If Not IsPostBack Then EmailTextBox.Text = u.Email

End Sub

Public Sub UpdateEmailButton_OnClick(sender As Object, args As EventArgs)

  Try
    u.Email = EmailTextBox.Text

    Membership.UpdateUser(u)
  
    Msg.Text = "User email updated."
  Catch e As System.Configuration.Provider.ProviderException
    Msg.Text = e.Message
  End Try

End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Update User E-Mail</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Update E-Mail Address for <%=User.Identity.Name%></h3>

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

  <table cellpadding="3" border="0">
    <tr>
      <td>Email Address:</td>
      <td><asp:TextBox id="EmailTextBox" MaxLength="128" Columns="30" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server"
                                    ControlToValidate="EmailTextBox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="UpdateEmailButton" 
                      Text="Update Email" 
                      OnClick="UpdateEmailButton_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>

備註

方法 GetUser 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。 如果您使用其中一個不採用 username 參數的多 GetUser 載,則 GetUser 傳回目前登入成員資格使用者的資訊。 目前的登入成員資格使用者是由 Name 目前 HttpContext 中使用者的 識別。

您也可以指定是否要 GetUser 針對使用 參數擷取 userIsOnline 的使用者更新上次活動日期/時間戳記。 GetUser對於不採用 userIsOnline 參數的多載, Membership.GetUser 會隱含更新使用者的最後一個活動日期/時間戳記。 Membership.GetUserGetUser 不行。

另請參閱

適用於

GetUser(Boolean)

從資料來源取得目前登入成員資格使用者的資訊。 如果已指定,會為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

public:
 static System::Web::Security::MembershipUser ^ GetUser(bool userIsOnline);
public static System.Web.Security.MembershipUser GetUser (bool userIsOnline);
static member GetUser : bool -> System.Web.Security.MembershipUser
Public Shared Function GetUser (userIsOnline As Boolean) As MembershipUser

參數

userIsOnline
Boolean

如果 true,則更新指定使用者的最後活動日期/時間戳記。

傳回

MembershipUser 物件,表示目前登入的使用者。

例外狀況

目前沒有任何成員使用者登入。

範例

下列程式碼範例會在 [ASP.NET] 頁面中顯示目前登入成員資格使用者的使用者名稱,而不會更新使用者的上次活動日期/時間戳記。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

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

MembershipUser currentUser;

public void Page_Load()
{
  currentUser = Membership.GetUser(false);
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>. 
</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>

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

Dim currentUser As MembershipUser

Public Sub Page_Load()
  currentUser = Membership.GetUser(False)
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>.
</form>

</body>
</html>

備註

方法 GetUser 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。 如果您使用其中一個不採用 username 參數的多 GetUser 載,則 GetUser 傳回目前登入成員資格使用者的資訊。 目前的登入成員資格使用者是由 Name 目前 HttpContext 中使用者的 識別。

您也可以指定是否要 GetUser 針對使用 userIsOnline 參數擷取的使用者更新上次活動日期/時間戳記。 GetUser對於不採用 userIsOnline 參數的多載, GetUser() 會隱含更新使用者的最後一個活動日期/時間戳記。 GetUser(System.String)GetUser(System.Object) 不行。

另請參閱

適用於

GetUser()

從資料來源取得資訊,並為目前登入的成員資格使用者,更新最後活動日期/時間戳記。

public:
 static System::Web::Security::MembershipUser ^ GetUser();
public static System.Web.Security.MembershipUser GetUser ();
static member GetUser : unit -> System.Web.Security.MembershipUser
Public Shared Function GetUser () As MembershipUser

傳回

MembershipUser 物件,表示目前登入的使用者。

例外狀況

目前沒有任何成員使用者登入。

範例

下列程式碼範例會更新目前登入成員資格使用者的上次活動日期/時間戳記,並在 [ASP.NET] 頁面中顯示使用者名稱。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

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

MembershipUser currentUser;

public void Page_Load()
{
  currentUser = Membership.GetUser();
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>. 
</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>

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

Dim currentUser As MembershipUser

Public Sub Page_Load()
  currentUser = Membership.GetUser()
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>.
</form>

</body>
</html>

備註

GetUser() 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。 如果您使用其中一個不採用 username 參數的多 GetUser 載,則 GetUser 傳回目前登入成員資格使用者的資訊。 目前的登入成員資格使用者是由 Name 目前 HttpContext 中使用者的 識別。

您也可以指定是否要 GetUser 針對使用 userIsOnline 參數擷取的使用者更新上次活動日期/時間戳記。 GetUser對於不採用 userIsOnline 參數的多載, GetUser() 會隱含更新使用者的最後一個活動日期/時間戳記。 GetUser(System.String)GetUser(System.Object) 不行。

另請參閱

適用於

GetUser(Object)

從資料來源取得與指定唯一識別項相關聯之成員資格使用者的資訊。

public:
 static System::Web::Security::MembershipUser ^ GetUser(System::Object ^ providerUserKey);
public static System.Web.Security.MembershipUser GetUser (object providerUserKey);
static member GetUser : obj -> System.Web.Security.MembershipUser
Public Shared Function GetUser (providerUserKey As Object) As MembershipUser

參數

providerUserKey
Object

使用者成員資格資料來源中的唯一使用者識別項。

傳回

MembershipUser 物件,表示與指定唯一識別項相關聯的使用者。

例外狀況

providerUserKeynull

備註

方法 GetUser 會從資料來源擷取使用者資訊,並建立 MembershipUser 填入傳回資料的物件。 使用者是使用 參數所指定 providerUserKey 資料來源的唯一識別碼來識別。

您也可以指定是否要 GetUser 針對使用 參數擷取 userIsOnline 的使用者更新上次活動日期/時間戳記。 GetUser對於不採用 userIsOnline 參數的多載, GetUser() 會隱含更新使用者的最後一個活動日期/時間戳記。 GetUser(System.String)GetUser(System.Object)

另請參閱

適用於