SqlMembershipProvider.GetPassword メソッド
アセンブリ: System.Web (system.web.dll 内)

Public Overrides Function GetPassword ( _ username As String, _ passwordAnswer As String _ ) As String
Dim instance As SqlMembershipProvider Dim username As String Dim passwordAnswer As String Dim returnValue As String returnValue = instance.GetPassword(username, passwordAnswer)
戻り値
指定したユーザー名のパスワード。

例外の種類 | 条件 |
---|---|
System.Web.Security.MembershipPasswordException | passwordAnswer が無効です。 または |
System.NotSupportedException | |
System.Configuration.Provider.ProviderException | username がメンバシップ データベース内に見つかりません。 または |
System.ArgumentException | または username が空の文字列 ("") であるか、コンマを含んでいるか、または 256 文字を超えています。 または passwordAnswer が空の文字列で RequiresQuestionAndAnswer が true です。 または passwordAnswer が 128 文字を超えています。 または |
System.ArgumentNullException | username が null 参照 (Visual Basic では Nothing) です。 または passwordAnswer が null 参照 (Visual Basic では Nothing) で RequiresQuestionAndAnswer が true です。 |

このメソッドは MembershipUser クラスによって呼び出され、ASP.NET アプリケーションの構成ファイル (Web.config) に指定されている SQL Server データベースからユーザーのパスワードを取得します。
正しくないパスワードの解答が GetPassword メソッドに対して入力されると、無効なパスワード解答の指定回数を追跡する内部カウンタが 1 つインクリメントされます。これにより、ユーザーをロックし、UnlockUser メソッドが呼び出されてロック ステータスが解除されるまでそのユーザーのログオンを禁止できます。ユーザーがロックされていない状態で、正しいパスワードの解答が指定されると、無効なパスワード解答の指定回数を追跡する内部カウンタはゼロにリセットされます。詳細については、MaxInvalidPasswordAttempts プロパティのトピックと PasswordAttemptWindow プロパティのトピックを参照してください。
GetPassword メソッドは、最初に Membership クラスの Provider プロパティを介して SqlMembershipProvider インスタンスの参照を取得することにより、直接呼び出すことができます。
PasswordFormat プロパティが Hashed に設定されている場合、GetPassword メソッドによりパスワードを取得することはできません。ハッシュされるパスワードは、一方向に暗号化され、復号化できません。PasswordFormat プロパティが Hashed で、EnablePasswordRetrieval が true の場合、プロバイダの初期化時 ProviderException がスローされます。

指定のユーザー名のパスワードを取得し、そのユーザーにパスワードを電子メール メッセージで送信するコード例を次に示します。
![]() |
---|
高水準のセキュリティが求められるサイトでは、パスワードをクリア テキストで電子メールを使って返信することは避けてください。高いセキュリティが要求されるサイトでは、SSL などの暗号化を使用してパスワードを返すことをお勧めします。 |
![]() |
---|
このサンプルは、Membership クラスを使用して、Web.config ファイルで defaultProvider として指定された SqlMembershipProvider を呼び出します。既定のプロバイダに SqlMembershipProvider 型としてアクセスする必要がある場合は、Membership クラスの Provider プロパティをキャストできます。固有のプロバイダの種類として構成されたその他のプロバイダにアクセスする場合、Membership クラスの Providers プロパティを使用して、参照されたプロバイダを固有プロバイダの種類としてキャストすることによって、構成された名前でアクセスできます。 |
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <%@ Import Namespace="System.Net.Mail" %> <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 e-mail 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 e-mail." 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> <head> <title>Sample: Retrieve Password</title> </head> <body> <form 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="C#" %> <%@ Import Namespace="System.Web.Security" %> <%@ Import Namespace="System.Net.Mail" %> <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 e-mail 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 e-mail."; } 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> <head> <title>Sample: Retrieve Password</title> </head> <body> <form 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>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSqlMembershipProvider.GetPassword メソッドを検索する場合は、下記のリンクをクリックしてください。

- SqlMembershipProvider.GetPassword メソッドのページへのリンク