星期三, 7月 19, 2006

ResetPassword

Asp.net 2.0是內建了給使用者使用的changepassword和passwordrecovery,但是如果使用者沒改密碼,也忘了密碼提示,要怎麼辦呢?沒錯,微軟是設計了resetPassword,但是這個函式要提供密碼提示的答案,使用者如果記得就自己設就好了,這個函式似乎一點用都沒有。
其實不然,翻看ASP.net的論壇,微軟的開發者提出了一種技巧:Providers。另外設一組requiresQuestionAndAnswer="false" 的provider,就可以輕易達到這個功能。
作法如下
1.改machine.config,xp在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG。加上新的一組provider,我的設定如下:
2. 新增個按紐,在onclick時寫下下面的東西,然後設個label把重設的密碼秀出來。如果可以的話,最好把新的密碼寄給使用者。
C#
MembershipProvider mp = Membership.Providers["AspNetAdminMembership"];
MembershipUser user = mp.GetUser(TreeView1.SelectedValue.ToString(), false);
lblPasswordReset.Text = user.ResetPassword();
VB
Dim mp As MembershipProvider = Membership.Providers("AspNetAdminMembership")
Dim user As MembershipUser = mp.GetUser(ddlUsers.SelectedItem.ToString, False)
Dim pass As String = user.ResetPassword
(C#跟VB有點出入,但我懶得改...)
3.記得把修改後的程式還有machine.config丟到主機上面
4.沒有了

沒有留言: