首先我們建一個web工程,在Default.aspx頁上加入一個LoginView控件,這是一個容器控件,它可以表示用戶是否登錄,允許用戶跳轉到另一頁.在控件的靈巧標籤(Smart Tasks)上可以改變顯示方式(Views)LoggedInTemplate(已登錄)和anonymousTemplate(未登錄).
現在在工程中再新建一個Web Form,取名爲Login.aspx(asp.net2.0默認登錄頁爲Login.aspx,如果想更改可以在machine.config.comments找).如果你想用不同的名字,可以在Web.config文件中加入
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="Authenticate.aspx"
protection="Validation" timeout="999999" />
</authentication>
...
Authenticate.aspx爲你想改的名字.
向Login.aspx中加入一個Login控件,可以在控件的靈巧標籤上的Auto Format選擇樣式.
<system.web>
<authentication mode="Forms"/>
...
這樣你就只需向Web站點增加用戶,而不用向Windows增加用戶了.
添加用戶
向default.aspx加入一個CreateUserWizard控件,現在你可以運行程序,填寫信息點擊Create User,成功後可以看到"Your account has been successfully created."
如果你儲存的密碼是純文本而不hash值,密碼恢復是可用.可是machine.config文件默認密碼儲存形式是hash的,
我們將其改爲以純文本方式儲存密碼,
...
<system.web>
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
applicationName="SecurityControls"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Clear" />
</providers>
</membership>
...
你清除了所有的Membership Providers,追加一個新的SqlMembershipProvider.注意:爲了允許密碼可恢復,你需要設置enablePasswordRetrieval爲true和passwordFormat爲Clear.如果你設置passwordFormat爲Hashed,那麼你必須將enablePasswordReset設置爲false.
將PasswordRecovery控件拖入到Default.aspx,在屬性窗體設置MailDefinition下的From和Subject.
在工程中新建一個名爲"Members"文件夾,在其中新建一個名爲"ChangePassword.aspx"Web Form,在Web.config中給Members目錄加上一個訪問限制.
...
</system.web>
<location path="Members">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
這樣已登錄的用戶可以訪問Members目錄,而匿名用戶則被限制.
將ChangePasswrod控件拖入ChangePasswrod.aspx中,選擇ChangePassword.aspx運行測試,你會發現頁面轉到 login.aspx,因爲你還沒有登錄,填寫登錄信息進入ChangePassword.aspx,試着更改你的密碼.