ChangePassword.UserName Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau menyetel nama pengguna situs Web untuk mengubah kata sandi.
public:
virtual property System::String ^ UserName { System::String ^ get(); void set(System::String ^ value); };
public virtual string UserName { get; set; }
member this.UserName : string with get, set
Public Overridable Property UserName As String
Nilai Properti
Nama pengguna untuk mengubah kata sandi.
Contoh
Contoh kode berikut menunjukkan halaman ASP.NET yang menggunakan ChangePassword kontrol Web, dan menyertakan penanganan aktivitas untuk SendingMail peristiwa bernama SendingMail
. Contoh kode mengasumsikan bahwa situs Web ASP.NET telah dikonfigurasi untuk menggunakan keanggotaan ASP.NET dan autentikasi Formulir, dan bahwa pengguna telah dibuat yang nama dan kata sandinya diketahui oleh Anda. Untuk informasi selengkapnya, lihat Cara: Menerapkan Autentikasi Formulir Sederhana.
Jika perubahan kata sandi berhasil, kode mencoba menggunakan SMTP untuk mengirim pesan email kepada pengguna untuk mengonfirmasi perubahan. Ini dilakukan di penangananSendingMail
aktivitas. Untuk informasi tentang cara mengonfigurasi server SMTP, lihat Cara: Menginstal dan Mengonfigurasi Server Virtual SMTP di IIS 6.0. Untuk tujuan contoh ini, tidak perlu mengonfigurasi server SMTP; contoh dibuat untuk menguji kegagalan mengirim pesan email.
Jika server email tidak dikonfigurasi dengan benar atau terjadi kesalahan lain dan pesan email tidak dapat dikirim, SendMailError
fungsi akan dipanggil. Pesan ditampilkan kepada pengguna. Selain itu, peristiwa dicatat ke log peristiwa Aplikasi Windows dengan asumsi bahwa sumber peristiwa bernama MySamplesSite sudah ada. Lihat contoh kode di bawah ini untuk membuat sumber peristiwa yang ditentukan. Untuk informasi selengkapnya tentang membuat sumber kejadian, lihat Penanganan Peristiwa Server di Halaman Formulir Web ASP.NET. Properti HandledSendMailErrorEventArgs objek diatur ke true
untuk menunjukkan bahwa kesalahan telah ditangani.
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void MySendingMail(object sender, MailMessageEventArgs e)
{
Message1.Text = "Sent mail to you to confirm the password change.";
}
void MySendMailError(object sender, SendMailErrorEventArgs e)
{
Message1.Text = "Could not send email to confirm password change.";
// The MySamplesSite event source has already been created by an administrator.
System.Diagnostics.EventLog myLog = new System.Diagnostics.EventLog();
myLog.Log = "Application";
myLog.Source = "MySamplesSite";
myLog.WriteEntry(
"Sending mail via SMTP failed with the following error: " +
e.Exception.Message.ToString(),
System.Diagnostics.EventLogEntryType.Error);
e.Handled = true;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ChangePassword including a SendMailError Event</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center">
<h1>ChangePassword</h1>
<asp:LoginView ID="LoginView1" Runat="server"
Visible="true">
<LoggedInTemplate>
<asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
<br />
</LoggedInTemplate>
<AnonymousTemplate>
You are not logged in
</AnonymousTemplate>
</asp:LoginView><br />
<asp:ChangePassword ID="ChangePassword1" Runat="server"
BorderStyle="Solid"
BorderWidth="1"
CancelDestinationPageUrl="~/Default.aspx"
DisplayUserName="true"
OnSendingMail="MySendingMail"
OnSendMailError="MySendMailError"
ContinueDestinationPageUrl="~/Default.aspx" >
<MailDefinition
BodyFileName="~\MailFiles\ChangePasswordMail.htm"
Subject="Activity information for you">
<EmbeddedObjects>
<asp:EmbeddedMailObject Name="LoginGif" Path="~\MailFiles\Login.gif" />
<asp:EmbeddedMailObject Name="PrivacyNoticeTxt" Path="~\MailFiles\PrivacyNotice.txt" />
</EmbeddedObjects>
</MailDefinition>
</asp:ChangePassword><br />
<asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />
<asp:HyperLink ID="HyperLink1" Runat="server"
NavigateUrl="~/Default.aspx">
Home
</asp:HyperLink>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!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 MySendingMail(ByVal Sender As Object, ByVal e As MailMessageEventArgs)
Message1.Text = "Sent mail to you to confirm the password change."
End Sub
Public Sub MySendMailError(ByVal Sender As Object, ByVal e As SendMailErrorEventArgs)
Message1.Text = "Could not send mail to confirm the password change."
' The MySamplesSite event source has already been created by an administrator.
Dim myLog As System.Diagnostics.EventLog
myLog = new System.Diagnostics.EventLog
myLog.Log = "Application"
myLog.Source = "MySamplesSite"
myLog.WriteEntry("Sending mail via SMTP failed with the following error: " & e.Exception.Message.ToString(), System.Diagnostics.EventLogEntryType.Error)
e.Handled = True
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ChangePassword including a SendMailError Event</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center">
<h1>ChangePassword</h1>
<asp:LoginView ID="LoginView1" Runat="server"
Visible="true">
<LoggedInTemplate>
<asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
<br />
</LoggedInTemplate>
<AnonymousTemplate>
You are not logged in
</AnonymousTemplate>
</asp:LoginView><br />
<asp:ChangePassword ID="ChangePassword1" Runat="server"
BorderStyle="Solid"
BorderWidth="1"
CancelDestinationPageUrl="~/Default.aspx"
DisplayUserName="true"
OnSendingMail="MySendingMail"
OnSendMailError="MySendMailError"
ContinueDestinationPageUrl="~/Default.aspx" >
<MailDefinition
BodyFileName="~\MailFiles\ChangePasswordMail.htm"
Subject="Activity information for you">
<EmbeddedObjects>
<asp:EmbeddedMailObject Name="LoginGif" Path="~\MailFiles\Login.gif" />
<asp:EmbeddedMailObject Name="PrivacyNoticeTxt" Path="~\MailFiles\PrivacyNotice.txt" />
</EmbeddedObjects>
</MailDefinition>
</asp:ChangePassword><br />
<asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />
<asp:HyperLink ID="HyperLink1" Runat="server"
NavigateUrl="~/Default.aspx">
Home
</asp:HyperLink>
</div>
</form>
</body>
</html>
Gunakan contoh kode berikut jika Anda perlu menambahkan sumber peristiwa bernama MySamplesSite secara terprogram ke log Aplikasi Anda. Sumber kejadian ini harus ada agar contoh kode pertama berfungsi dengan benar. Contoh kode berikut memerlukan hak istimewa Administrator.
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
#endregion
namespace CreateEventSource
{
class Program
{
static void Main(string[] args)
{
try
{
// Create the source, if it does not already exist.
if (!EventLog.SourceExists("MySamplesSite"))
{
EventLog.CreateEventSource("MySamplesSite", "Application");
Console.WriteLine("Creating Event Source");
}
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySamplesSite";
// Write an informational entry to the event log.
myLog.WriteEntry("Testing writing to event log.");
Console.WriteLine("Message written to event log.");
}
catch (Exception e)
{
Console.WriteLine("Exception:");
Console.WriteLine("{0}", e.ToString());
}
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics
Namespace CreateEventSource
Class Program
Sub Main()
Try
' Create the source, if it does not already exist.
If Not (EventLog.SourceExists("MySamplesSite")) Then
EventLog.CreateEventSource("MySamplesSite", "Application")
Console.WriteLine("Creating Event Source")
End If
' Create an EventLog instance and assign its source.
Dim myLog As New EventLog
myLog.Source = "MySamplesSite"
' Write an informational entry to the event log.
myLog.WriteEntry("Testing writing to event log.")
Console.WriteLine("Message written to event log.")
Catch e As Exception
Console.WriteLine("Exception:")
Console.WriteLine(e.ToString)
End Try
End Sub
End Class
End Namespace
Contoh kode berikut dapat digunakan sebagai file ChangePasswordMail.htm untuk kode contoh sebelumnya.
Penting
Mengirim nama akun pengguna atau kata sandi dalam email adalah potensi ancaman keamanan. Pesan email biasanya dikirim dalam teks biasa dan dapat dibaca oleh aplikasi "sniffing" jaringan khusus. Untuk meningkatkan keamanan, gunakan mitigasi yang dijelaskan dalam Mengamankan Kontrol Login.
<html>
<head><title></title></head>
<body>
<form>
<h1>Your password for the account named "<%Username%>" has changed.</h1>
<p>
If you did not initiate this change, please call 1-206-555-0100.
</p>
<p>
<a href="http://www.contoso.com/login.aspx">
<img src="cid:LoginGif" alt="Log In" />
</a>
</p>
<p>
Please read our attached Privacy Notice.
</p>
</form>
</body>
</html>
Keterangan
Properti UserName mendapatkan nama pengguna situs Web untuk mengubah kata sandi. Anda juga dapat menggunakan UserName properti hanya untuk mendapatkan nama pengguna dari dalam ChangePassword kontrol, tanpa mengubah kata sandi. Selain itu, UserName properti dapat digunakan dari dalam pesan email yang telah dibuat untuk mengirim email dari ChangePassword kontrol dengan menggunakan string "<%UserName%>" dalam isi pesan email.
Untuk mengizinkan pengguna mengetikkan nama pengguna, atur properti ke DisplayUserNametrue
. Jika pengguna sudah diautentikasi, mereka tidak perlu memasukkan nama pengguna.