Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Scott Mitchell
Catatan
Sejak artikel ini ditulis, penyedia Keanggotaan ASP.NET telah digantikan oleh ASP.NET Identity. Kami sangat menyarankan untuk memperbarui aplikasi untuk menggunakan platform identitas ASP.NET daripada penyedia Keanggotaan yang ditampilkan pada saat artikel ini ditulis. ASP.NET Identity memiliki sejumlah keunggulan dibandingkan sistem Keanggotaan ASP.NET, termasuk :
- Performa yang lebih baik
- Peningkatan ekstensibilitas dan kemampuan pengujian
- Dukungan untuk OAuth, OpenID Connect, dan autentikasi dua faktor
- Dukungan Identitas berbasis klaim
- Interoperabilitas yang lebih baik dengan ASP.Net Core
Tutorial ini menunjukkan cara membuat halaman web bagi administrator untuk mengelola status pengguna yang dikunci dan disetujui. Kami juga akan melihat cara menyetujui pengguna baru hanya setelah mereka memverifikasi alamat email mereka.
Pengantar
Bersama dengan nama pengguna, kata sandi, dan email, setiap akun pengguna memiliki dua bidang status yang menentukan apakah pengguna dapat masuk ke situs: dikunci dan disetujui. Pengguna secara otomatis dikunci jika mereka memberikan kredensial yang tidak valid beberapa kali dalam jumlah menit tertentu (pengaturan default mengunci pengguna setelah 5 upaya masuk yang tidak valid dalam waktu 10 menit). Status yang disetujui berguna dalam skenario di mana beberapa tindakan harus bertranspirasi sebelum pengguna baru dapat masuk ke situs. Misalnya, pengguna mungkin perlu terlebih dahulu memverifikasi alamat email mereka atau disetujui oleh administrator sebelum dapat masuk.
Karena pengguna yang dikunci atau tidak disetujui tidak dapat masuk, wajar untuk bertanya-tanya bagaimana status ini dapat diatur ulang. ASP.NET tidak menyertakan fungsionalitas bawaan atau kontrol Web untuk mengelola status pengguna yang dikunci dan disetujui, sebagian karena keputusan ini perlu ditangani berdasarkan situs demi situs. Beberapa situs mungkin secara otomatis menyetujui semua akun pengguna baru (perilaku default). Orang lain memiliki administrator yang menyetujui akun baru atau tidak menyetujui pengguna hingga mereka mengunjungi tautan yang dikirim ke alamat email yang disediakan saat mereka mendaftar. Demikian juga, beberapa situs mungkin mengunci pengguna hingga administrator mengatur ulang status mereka, sementara situs lain mengirim email ke pengguna yang terkunci dengan URL yang dapat mereka kunjungi untuk membuka kunci akun mereka.
Tutorial ini menunjukkan cara membuat halaman web bagi administrator untuk mengelola status pengguna yang dikunci dan disetujui. Kami juga akan melihat cara menyetujui pengguna baru hanya setelah mereka memverifikasi alamat email mereka.
Langkah 1: Mengelola Status Pengguna yang Dikunci dan Disetujui
Di tutorial Membangun Antarmuka untuk Memilih Satu Akun Pengguna dari Banyak, kami membuat halaman yang mencantumkan setiap akun pengguna di halaman, GridView yang difilter. Kisi mencantumkan nama dan email setiap pengguna, status mereka yang disetujui dan dikunci, apakah mereka saat ini online, dan komentar apa pun tentang pengguna. Untuk mengelola status pengguna yang disetujui dan dikunci, kita dapat membuat kisi ini dapat diedit. Untuk mengubah status yang disetujui pengguna, administrator akan terlebih dahulu menemukan akun pengguna lalu mengedit baris GridView terkait, mencentang atau menghapus centang pada kotak centang yang disetujui. Atau, kita dapat mengelola status yang disetujui dan dikunci melalui halaman ASP.NET terpisah.
Untuk tutorial ini mari kita gunakan dua halaman ASP.NET: ManageUsers.aspx
dan UserInformation.aspx
. Idenya di sini adalah bahwa ManageUsers.aspx
mencantumkan akun pengguna dalam sistem, sekaligus UserInformation.aspx
memungkinkan administrator untuk mengelola status yang disetujui dan dikunci untuk pengguna tertentu. Urutan bisnis pertama kami adalah menambah GridView untuk ManageUsers.aspx
menyertakan HyperLinkField, yang dirender sebagai kolom tautan. Kami ingin setiap tautan menunjuk ke UserInformation.aspx?user=UserName
, di mana UserName adalah nama pengguna untuk diedit.
Catatan
Jika Anda mengunduh kode untuk tutorial Memulihkan dan Mengubah Kata Sandi, Anda mungkin telah memperhatikan bahwa ManageUsers.aspx
halaman sudah berisi sekumpulan tautan "Kelola" dan halaman menyediakan UserInformation.aspx
antarmuka untuk mengubah kata sandi pengguna yang dipilih. Saya memutuskan untuk tidak mereplikasi fungsionalitas itu dalam kode yang terkait dengan tutorial ini karena berfungsi dengan menghindari API Keanggotaan dan beroperasi langsung dengan database SQL Server untuk mengubah kata sandi pengguna. Tutorial ini dimulai dari awal dengan UserInformation.aspx
halaman.
Menambahkan Tautan "Kelola" keUserAccounts
GridView
ManageUsers.aspx
Buka halaman dan tambahkan HyperLinkField ke UserAccounts
GridView. Atur properti HyperLinkField Text
ke "Kelola" dan propertinya DataNavigateUrlFields
DataNavigateUrlFormatString
masing-masing ke UserName
dan "UserInformation.aspx?user={0}". Pengaturan ini mengonfigurasi HyperLinkField sehingga semua hyperlink menampilkan teks "Kelola", tetapi setiap tautan meneruskan nilai UserName yang sesuai ke dalam querystring.
Setelah menambahkan HyperLinkField ke GridView, luangkan waktu sejenak ManageUsers.aspx
untuk melihat halaman melalui browser. Seperti yang ditunjukkan Gambar 1, setiap baris GridView sekarang menyertakan tautan "Kelola". Tautan "Kelola" untuk Bruce menunjuk ke UserInformation.aspx?user=Bruce
, sedangkan tautan "Kelola" untuk titik Dave ke UserInformation.aspx?user=Dave
.
Gambar 1: HyperLinkField Menambahkan Tautan "Kelola" untuk Setiap Akun Pengguna (Klik untuk melihat gambar ukuran penuh)
Kami akan membuat antarmuka dan kode pengguna untuk halaman dalam UserInformation.aspx
sesaat, tetapi pertama-tama mari kita bicara tentang cara mengubah status pengguna yang dikunci dan disetujui secara terprogram. Kelas MembershipUser
memilikiIsLockedOut
properti dan IsApproved
. Properti IsLockedOut
bersifat baca-saja. Tidak ada mekanisme untuk mengunci pengguna secara terprogram; untuk membuka kunci pengguna, gunakan MembershipUser
metode kelas UnlockUser
. Properti IsApproved
dapat dibaca dan dapat ditulis. Untuk menyimpan perubahan apa pun pada properti ini, kita perlu memanggil Membership
metode kelasUpdateUser
, meneruskan objek yang dimodifikasiMembershipUser
.
IsApproved
Karena properti dapat dibaca dan dapat ditulis, kontrol CheckBox mungkin adalah elemen antarmuka pengguna terbaik untuk mengonfigurasi properti ini. Namun, Kotak Centang tidak akan berfungsi untuk IsLockedOut
properti karena administrator tidak dapat mengunci pengguna, dia hanya dapat membuka kunci pengguna. Antarmuka pengguna yang sesuai untuk IsLockedOut
properti adalah Tombol yang, ketika diklik, membuka kunci akun pengguna. Tombol ini hanya boleh diaktifkan jika pengguna dikunci.
UserInformation.aspx
Membuat Halaman
Kami sekarang siap untuk mengimplementasikan antarmuka pengguna di UserInformation.aspx
. Buka halaman ini dan tambahkan kontrol Web berikut ini:
- Kontrol HyperLink yang, saat diklik, mengembalikan administrator ke
ManageUsers.aspx
halaman. - Kontrol Label Web untuk menampilkan nama pengguna yang dipilih. Atur
ID
Label ini keUserNameLabel
dan hapus properti Teksnya. - Kontrol Kotak Centang bernama
IsApproved
. Atur propertinyaAutoPostBack
keTrue
. - Kontrol Label untuk menampilkan tanggal terakhir pengguna dikunci. Beri nama Label
LastLockedOutDateLabel
ini dan hapus propertinyaText
. - Tombol untuk membuka kunci pengguna. Beri nama Tombol
UnlockUserButton
ini dan atur propertinyaText
ke "Buka Kunci Pengguna". - Kontrol Label untuk menampilkan pesan status, seperti, "Status pengguna yang disetujui telah diperbarui." Beri nama kontrol
StatusMessage
ini , hapus propertinyaText
, dan atur propertinyaCssClass
keImportant
. (TheImportant
Kelas CSS didefinisikan dalamStyles.css
file lembar gaya; itu menampilkan teks yang sesuai dalam font merah besar.)
Setelah menambahkan kontrol ini, tampilan Desain di Visual Studio akan terlihat mirip dengan cuplikan layar di Gambar 2.
Gambar 2: Buat Antarmuka Pengguna untuk UserInformation.aspx
(Klik untuk melihat gambar ukuran penuh)
Setelah antarmuka pengguna selesai, tugas kami berikutnya adalah mengatur IsApproved
CheckBox dan kontrol lain berdasarkan informasi pengguna yang dipilih. Buat penanganan aktivitas untuk peristiwa halaman Load
dan tambahkan kode berikut:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' If querystring value is missing, send the user to ManageUsers.aspx
Dim userName As String = Request.QueryString("user")
If String.IsNullOrEmpty(userName) Then
Response.Redirect("ManageUsers.aspx")
End If
' Get information about this user
Dim usr As MembershipUser = Membership.GetUser(userName)
If usr Is Nothing Then
Response.Redirect("ManageUsers.aspx")
End If
UserNameLabel.Text = usr.UserName
IsApproved.Checked = usr.IsApproved
If usr.LastLockoutDate.Year < 2000 Then
LastLockoutDateLabel.Text = String.Empty
Else
LastLockoutDateLabel.Text = usr.LastLockoutDate.ToShortDateString()
UnlockUserButton.Enabled = usr.IsLockedOut
End If
End If
End Sub
Kode di atas dimulai dengan memastikan bahwa ini adalah kunjungan pertama ke halaman dan bukan postback berikutnya. Kemudian membaca nama pengguna yang diteruskan melalui user
bidang querystring dan mengambil informasi tentang akun pengguna tersebut Membership.GetUser(username)
melalui metode . Jika tidak ada nama pengguna yang disediakan melalui querystring, atau jika pengguna yang ditentukan tidak dapat ditemukan, administrator dikirim kembali ke ManageUsers.aspx
halaman.
Nilai MembershipUser
objek UserName
kemudian ditampilkan di UserNameLabel
dan IsApproved
Kotak Centang dicentang berdasarkan IsApproved
nilai properti.
Properti MembershipUser
objek LastLockoutDate
mengembalikan nilai yang DateTime
menunjukkan kapan pengguna terakhir kali dikunci. Jika pengguna belum pernah dikunci, nilai yang dikembalikan tergantung pada penyedia Keanggotaan. Saat akun baru dibuat, mengatur SqlMembershipProvider
aspnet_Membership
bidang tabel LastLockoutDate
ke 1754-01-01 12:00:00 AM
. Kode di atas menampilkan string kosong dalam LastLockoutDateLabel
jika LastLockoutDate
properti terjadi sebelum tahun 2000; jika tidak, bagian LastLockoutDate
tanggal properti ditampilkan di Label.
Enabled
Properti UnlockUserButton
diatur ke status pengguna yang dikunci, yang berarti bahwa Tombol ini hanya akan diaktifkan jika pengguna dikunci.
Luangkan waktu sejenak UserInformation.aspx
untuk menguji halaman melalui browser. Tentu saja, Anda harus memulai dari ManageUsers.aspx
dan memilih akun pengguna untuk dikelola. Setelah tiba di UserInformation.aspx
, perhatikan bahwa IsApproved
Kotak Centang hanya diperiksa apakah pengguna disetujui. Jika pengguna pernah dikunci, tanggal terakhir mereka yang dikunci akan ditampilkan. Tombol Buka Kunci Pengguna diaktifkan hanya jika pengguna saat ini dikunci. Memeriksa atau menghapus centang Kotak IsApproved
Centang atau mengklik tombol Buka Kunci Pengguna menyebabkan postback, tetapi tidak ada modifikasi yang dilakukan pada akun pengguna karena kami belum membuat penanganan aktivitas untuk peristiwa ini.
Kembali ke Visual Studio dan buat penanganan aktivitas untuk IsApproved
peristiwa Kotak Centang CheckedChanged
dan UnlockUser
acara Tombol Click
. Di penanganan CheckedChanged
aktivitas, atur properti pengguna IsApproved
ke Checked
properti Kotak Centang lalu simpan perubahan melalui panggilan ke Membership.UpdateUser
. Di penanganan Click
aktivitas, cukup panggil MembershipUser
metode objek UnlockUser
. Di kedua penanganan aktivitas, tampilkan pesan yang sesuai di StatusMessage
Label.
Protected Sub IsApproved_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles IsApproved.CheckedChanged
'Toggle the user's approved status
Dim userName As String = Request.QueryString("user")
Dim usr As MembershipUser = Membership.GetUser(userName)
usr.IsApproved = IsApproved.Checked
Membership.UpdateUser(usr)
StatusMessage.Text = "The user's approved status has been updated."
End Sub
Protected Sub UnlockUserButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles UnlockUserButton.Click
'Unlock the user account
Dim userName As String = Request.QueryString("user")
Dim usr As MembershipUser = Membership.GetUser(userName)
usr.UnlockUser()
UnlockUserButton.Enabled = False
StatusMessage.Text = "The user account has been unlocked."
End Sub
UserInformation.aspx
Menguji Halaman
Dengan penanganan aktivitas ini di tempat, kunjungi kembali halaman dan pengguna yang tidak disetujui. Seperti yang ditunjukkan Gambar 3, Anda akan melihat pesan singkat di halaman yang menunjukkan bahwa properti pengguna IsApproved
berhasil dimodifikasi.
Gambar 3: Chris telah Tidak Disetujui (Klik untuk melihat gambar ukuran penuh)
Selanjutnya, keluar dan coba masuk sebagai pengguna yang akunnya baru saja tidak disetujui. Karena pengguna tidak disetujui, mereka tidak dapat masuk. Secara default, kontrol Masuk menampilkan pesan yang sama jika pengguna tidak dapat masuk, terlepas dari alasannya. Tetapi dalam tutorial Memvalidasi Kredensial Pengguna Terhadap Penyimpanan Pengguna Keanggotaan, kami melihat peningkatan kontrol Login untuk menampilkan pesan yang lebih sesuai. Seperti yang ditunjukkan Oleh Gambar 4, Chris ditunjukkan pesan yang menjelaskan bahwa dia tidak dapat masuk karena akunnya belum disetujui.
Gambar 4: Chris Tidak Dapat Masuk Karena Akunnya Tidak Disetujui (Klik untuk melihat gambar ukuran penuh)
Untuk menguji fungsionalitas yang dikunci, coba masuk sebagai pengguna yang disetujui, tetapi gunakan kata sandi yang salah. Ulangi proses ini berapa kali yang diperlukan hingga akun pengguna dikunci. Kontrol Masuk juga diperbarui untuk menampilkan pesan kustom jika mencoba masuk dari akun yang dikunci. Anda tahu bahwa akun telah dikunci setelah Anda mulai melihat pesan berikut di halaman masuk: "Akun Anda telah dikunci karena terlalu banyak upaya masuk yang tidak valid. Silakan hubungi administrator agar akun Anda tidak terkunci."
Kembali ke ManageUsers.aspx
halaman dan klik tautan Kelola untuk pengguna yang dikunci. Seperti yang ditunjukkan Gambar 5, Anda akan melihat nilai di tombol LastLockedOutDateLabel
Buka Kunci Pengguna harus diaktifkan. Klik tombol Buka Kunci Pengguna untuk membuka kunci akun pengguna. Setelah Anda membuka kunci pengguna, mereka akan dapat masuk lagi.
Gambar 5: Dave Telah Dikunci dari Sistem (Klik untuk melihat gambar ukuran penuh)
Langkah 2: Menentukan Status Pengguna Baru yang Disetujui
Status yang disetujui berguna dalam skenario di mana Anda ingin beberapa tindakan dilakukan sebelum pengguna baru dapat masuk dan mengakses fitur khusus pengguna situs. Misalnya, Anda mungkin menjalankan situs web privat di mana semua halaman, kecuali untuk halaman masuk dan pendaftaran, hanya dapat diakses oleh pengguna yang diautentikasi. Tetapi apa yang terjadi jika orang asing mencapai situs web Anda, menemukan halaman pendaftaran, dan membuat akun? Untuk mencegah hal ini terjadi, Anda dapat memindahkan halaman pendaftaran ke Administration
folder, dan mengharuskan administrator membuat setiap akun secara manual. Atau, Anda dapat mengizinkan siapa pun untuk mendaftar, tetapi melarang akses situs hingga administrator menyetujui akun pengguna.
Secara default, kontrol CreateUserWizard menyetujui akun baru. Anda dapat mengonfigurasi perilaku ini menggunakan properti kontrolDisableCreatedUser
. Atur properti ini ke True
untuk tidak menyetujui akun pengguna baru.
Catatan
Secara default kontrol CreateUserWizard secara otomatis masuk ke akun pengguna baru. Perilaku ini ditentukan oleh properti kontrolLoginCreatedUser
. Karena pengguna yang tidak disetujui tidak dapat masuk ke situs, ketika DisableCreatedUser
True
akun pengguna baru tidak masuk ke situs, terlepas dari LoginCreatedUser
nilai properti .
Jika Anda secara terprogram membuat akun pengguna baru melalui Membership.CreateUser
metode , untuk membuat akun pengguna yang tidak disetujui, gunakan salah satu kelebihan beban yang menerima nilai properti pengguna IsApproved
baru sebagai parameter input.
Langkah 3: Menyetujui Pengguna Dengan Memverifikasi Alamat Email mereka
Banyak situs web yang mendukung akun pengguna tidak menyetujui pengguna baru sampai mereka memverifikasi alamat email yang mereka berikan saat mendaftar. Proses verifikasi ini biasanya digunakan untuk menggagalkan bot, spammer, dan ne'er-do-wells lainnya karena memerlukan alamat email unik dan terverifikasi dan menambahkan langkah tambahan dalam proses pendaftaran. Dengan model ini, ketika pengguna baru mendaftar, mereka dikirimi pesan email yang menyertakan tautan ke halaman verifikasi. Dengan mengunjungi tautan, pengguna telah membuktikan bahwa mereka menerima email dan, oleh karena itu, alamat email yang diberikan valid. Halaman verifikasi bertanggung jawab untuk menyetujui pengguna. Ini dapat terjadi secara otomatis, sehingga menyetujui setiap pengguna yang mencapai halaman ini, atau hanya setelah pengguna memberikan beberapa informasi tambahan, seperti CAPTCHA.
Untuk mengakomodasi alur kerja ini, kita perlu terlebih dahulu memperbarui halaman pembuatan akun sehingga pengguna baru tidak disetujui. Buka halaman EnhancedCreateUserWizard.aspx
di Membership
folder dan atur properti kontrol DisableCreatedUser
CreateUserWizard ke True
.
Selanjutnya, kita perlu mengonfigurasi kontrol CreateUserWizard untuk mengirim email ke pengguna baru dengan instruksi tentang cara memverifikasi akun mereka. Secara khusus, kami akan menyertakan tautan dalam email ke Verification.aspx
halaman (yang belum kami buat), meneruskan pengguna UserId
baru melalui querystring. Halaman Verification.aspx
akan mencari pengguna yang ditentukan dan menandai mereka disetujui.
Mengirim Email Verifikasi ke Pengguna Baru
Untuk mengirim email dari kontrol CreateUserWizard, konfigurasikan propertinya MailDefinition
dengan tepat. Seperti yang dibahas dalam tutorial sebelumnya, kontrol ChangePassword dan PasswordRecovery menyertakan MailDefinition
properti yang berfungsi dengan cara yang sama seperti kontrol CreateUserWizard.
Catatan
Untuk menggunakan properti , MailDefinition
Anda perlu menentukan opsi pengiriman email di Web.config
. Untuk informasi selengkapnya, lihat Mengirim Email di ASP.NET.
Mulailah dengan membuat templat email baru bernama CreateUserWizard.txt
di EmailTemplates
folder . Gunakan teks berikut untuk templat:
Hello <%UserName%>! Welcome aboard.
Your new account is almost ready, but before you can login you must first visit:
<%VerificationUrl%>
Once you have visited the verification URL you will be redirected to the login page.
If you have any problems or questions, please reply to this email.
Thanks!
Atur MailDefinition
properti ke BodyFileName
"~/EmailTemplates/CreateUserWizard.txt" dan propertinya Subject
ke "Selamat Datang di Situs Web Saya! Harap aktifkan akun Anda."
Perhatikan bahwa CreateUserWizard.txt
templat email menyertakan <%VerificationUrl%>
tempat penampung. Di sinilah URL untuk Verification.aspx
halaman akan ditempatkan. CreateUserWizard secara otomatis mengganti <%UserName%>
tempat penampung dan <%Password%>
dengan nama pengguna dan kata sandi akun baru, tetapi tidak ada tempat penampung bawaan <%VerificationUrl%>
. Kita perlu menggantinya secara manual dengan URL verifikasi yang sesuai.
Untuk mencapai hal ini, buat penanganan aktivitas untuk peristiwa CreateUserWizard SendingMail
dan tambahkan kode berikut:
Protected Sub NewUserWizard_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles NewUserWizard.SendingMail
'Get the UserId of the just-added user
Dim newUser As MembershipUser = Membership.GetUser(NewUserWizard.UserName)
Dim newUserId As Guid = CType(newUser.ProviderUserKey, Guid)
' Determine the full verification URL (i.e., http://yoursite.com/Verification.aspx?ID=...)
Dim urlBase As String = Request.Url.GetLeftPart(UriPartial.Authority) & Request.ApplicationPath
Dim verifyUrl As String = "/Verification.aspx?ID=" + newUserId.ToString()
Dim fullUrl As String = urlBase & verifyUrl
' Replace <%VerificationUrl%> with the appropriate URL and querystring
e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", fullUrl)
End Sub
Peristiwa diaktifkan SendingMail
setelah CreatedUser
peristiwa, yang berarti bahwa pada saat penanganan aktivitas di atas menjalankan akun pengguna baru telah dibuat. Kita dapat mengakses nilai pengguna UserId
baru dengan memanggil Membership.GetUser
metode , meneruskan yang UserName
dimasukkan ke kontrol CreateUserWizard. Selanjutnya, URL verifikasi dibentuk. Pernyataan Request.Url.GetLeftPart(UriPartial.Authority)
mengembalikan http://yourserver.com
bagian URL; Request.ApplicationPath
mengembalikan jalur tempat aplikasi di-rooting. URL verifikasi kemudian didefinisikan sebagai Verification.aspx?ID=userId
. Kedua string ini kemudian digabungkan untuk membentuk URL lengkap. Akhirnya, isi pesan email (e.Message.Body
) memiliki semua kemunculan <%VerificationUrl%>
diganti dengan URL lengkap.
Efek bersihnya adalah bahwa pengguna baru tidak disetujui, yang berarti bahwa mereka tidak dapat masuk ke situs. Selain itu, mereka secara otomatis dikirimi email dengan tautan ke URL verifikasi (lihat Gambar 6).
Gambar 6: Pengguna Baru Menerima Email dengan Tautan ke URL Verifikasi (Klik untuk melihat gambar ukuran penuh)
Catatan
Langkah CreateUserWizard default kontrol CreateUserWizard menampilkan pesan yang memberi tahu pengguna bahwa akun mereka telah dibuat dan menampilkan tombol Lanjutkan. Mengklik ini akan membawa pengguna ke URL yang ditentukan oleh properti kontrol ContinueDestinationPageUrl
. CreateUserWizard di dikonfigurasi EnhancedCreateUserWizard.aspx
untuk mengirim pengguna baru ke ~/Membership/AdditionalUserInfo.aspx
, yang meminta pengguna untuk kampung halaman, URL beranda, dan tanda tangan mereka. Karena informasi ini hanya dapat ditambahkan oleh pengguna yang masuk, masuk akal untuk memperbarui properti ini untuk mengirim pengguna kembali ke beranda situs (~/Default.aspx
). Selain itu, EnhancedCreateUserWizard.aspx
halaman atau langkah CreateUserWizard harus diganti untuk memberi tahu pengguna bahwa mereka telah dikirimi email verifikasi dan akun mereka tidak akan diaktifkan sampai mereka mengikuti instruksi dalam email ini. Saya meninggalkan modifikasi ini sebagai latihan untuk pembaca.
Membuat Halaman Verifikasi
Tugas terakhir kita adalah membuat Verification.aspx
halaman. Tambahkan halaman ini ke folder akar, mengaitkannya dengan Site.master
halaman master. Seperti yang telah kami lakukan dengan sebagian besar halaman konten sebelumnya yang ditambahkan ke situs, hapus kontrol Konten yang mereferensikan LoginContent
ContentPlaceHolder sehingga halaman konten menggunakan konten default halaman master.
Tambahkan kontrol Web Label ke Verification.aspx
halaman, atur ID
ke StatusMessage
dan hapus properti teksnya. Selanjutnya, buat penanganan Page_Load
aktivitas dan tambahkan kode berikut:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If String.IsNullOrEmpty(Request.QueryString("ID")) Then
StatusMessage.Text = "The UserId was not included in the querystring..."
Else
Dim userId As Guid
Try
userId = New Guid(Request.QueryString("ID"))
Catch
StatusMessage.Text = "The UserId passed into the querystring is not in the proper format..."
Exit Sub
End Try
Dim usr As MembershipUser = Membership.GetUser(userId)
If usr Is Nothing Then
StatusMessage.Text = "User account could not be found..."
Else
' Approve the user
usr.IsApproved = True
Membership.UpdateUser(usr)
StatusMessage.Text = "Your account has been approved. Please <a href=""Login.aspx"">login</a> to the site."
End If
End If
End Sub
Sebagian besar kode di atas memverifikasi bahwa UserId yang disediakan melalui querystring ada, bahwa kode tersebut adalah nilai yang valid Guid
, dan mereferensikan akun pengguna yang ada. Jika semua pemeriksaan ini lolos, akun pengguna disetujui; jika tidak, pesan status yang sesuai ditampilkan.
Gambar 7 memperlihatkan Verification.aspx
halaman saat dikunjungi melalui browser.
Gambar 7: Akun Pengguna Baru Sekarang Disetujui (Klik untuk melihat gambar ukuran penuh)
Ringkasan
Semua akun pengguna Keanggotaan memiliki dua status yang menentukan apakah pengguna dapat masuk ke situs: IsLockedOut
dan IsApproved
. Kedua properti ini harus agar True
pengguna dapat masuk.
Status pengguna yang terkunci digunakan sebagai langkah keamanan untuk mengurangi kemungkinan peretas masuk ke situs melalui metode brute force. Secara khusus, pengguna dikunci jika ada sejumlah upaya masuk yang tidak valid dalam jangka waktu tertentu. Batas ini dapat dikonfigurasi melalui pengaturan penyedia Keanggotaan di Web.config
.
Status yang disetujui umumnya digunakan sebagai sarana untuk melarang pengguna baru masuk hingga beberapa tindakan telah ditranspirasi. Mungkin situs mengharuskan akun baru terlebih dahulu disetujui oleh administrator atau, seperti yang kita lihat di Langkah 3, dengan memverifikasi alamat email mereka.
Selamat Pemrograman!
Tentang Penulis
Scott Mitchell, penulis beberapa buku ASP/ASP.NET dan pendiri 4GuysFromRolla.com, telah bekerja dengan teknologi Microsoft Web sejak 1998. Scott bekerja sebagai konsultan, pelatih, dan penulis independen. Buku terbarunya adalah Sams Teach Yourself ASP.NET 2.0 dalam 24 Jam. Scott dapat dijangkau di mitchell@4guysfromrolla.com atau melalui blognya di http://ScottOnWriting.NET.
Terima kasih khusus untuk...
Seri tutorial ini ditinjau oleh banyak peninjau yang bermanfaat. Tertarik untuk meninjau artikel MSDN saya yang akan datang? Jika demikian, letakkan saya antrean di mitchell@4GuysFromRolla.com