Membership.EnablePasswordRetrieval プロパティ
アセンブリ: System.Web (system.web.dll 内)


EnablePasswordRetrieval が false の場合、基のメンバシップ プロバイダが HttpException をスローする可能性があります。
.NET Framework 付属のプロバイダは、パスワードのセキュリティを高めるため、複数のパスワードの形式をサポートしています。パスワードの形式が Hashed に設定されている場合、ユーザーはデータベースから既存のパスワードを取得できません。Hashed パスワード形式では、パスワード値の一方向エンコーディングが行われます。認証時、パスワードは "ハッシュ" され、データベース内に格納されている値と比較されます。"ハッシュ" された値をアンエンコードして、元のパスワード値を取得することはできません。詳細については、「MembershipPasswordFormat」を参照してください。

次のコード例に、ASP.NET アプリケーションの Web.config ファイルの system.web セクションの membership 要素を示します。この例では、アプリケーションが SqlMembershipProvider のインスタンスを使用するように指定し、パスワードのリセットを有効化します。
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> <providers> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServices" enablePasswordRetrieval="true" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Encrypted" applicationName="MyApplication" /> </providers> </membership>
まず EnablePasswordRetrieval が true であることを確認し、次に指定したユーザー名のパスワードを取得し、指定したユーザーの電子メール アドレスにパスワードを送信するコード例を次に示します。
![]() |
---|
高水準のセキュリティが求められるサイトでは、パスワードをクリア テキストで電子メールを使って返信することは避けてください。高いセキュリティが要求されるサイトでは、SSL などの暗号化を使用してパスワードを返すことをお勧めします。 |
<%@ 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に収録されているすべての辞書からMembership.EnablePasswordRetrieval プロパティを検索する場合は、下記のリンクをクリックしてください。

- Membership.EnablePasswordRetrieval プロパティのページへのリンク