推薦:剖析ASP.NET AJAX的面向?qū)ο笏枷?/br>人們期待已久的ASP.NET AJAX v1.0正式版終于發(fā)布了。現(xiàn)在你能用Microsoft ASP.NET AJAX的javascript很容易的寫出豐富的、交互式的web應(yīng)用。尤其值得關(guān)注的是Microsoft AJAX Library增加了面向?qū)?/p>
以前開發(fā)項目時經(jīng)常是自己開發(fā)一套用戶權(quán)限管理系統(tǒng)進(jìn)行驗證,比較靈活。最近為了單點登錄的問題又把Asp.Net自帶的驗證方式看了一遍,發(fā)現(xiàn)這種方式也比較方便,功能也還可以。在Asp.Net提供了三種常用的驗證方式:Windows方式是和IIS結(jié)合起來可以實現(xiàn)基本、摘要、集成 Windows等身份驗證;Passport方式是使用Windows Live ID的帳戶來進(jìn)行統(tǒng)一驗證的;Forms方式是使用常見的表單來實現(xiàn)驗證。
本文主要就是討論Forms驗證方式普通實現(xiàn)、自定義實現(xiàn)、自定義角色提供程序、如何單點登錄(可和MOSS結(jié)合)等幾個方面。
一、普通實現(xiàn)方式
這種方式是最簡單的,只需要配置一下就可以了。
1、執(zhí)行aspnet_regsql命令建立數(shù)據(jù)庫
aspnet_regsql命令在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727目錄下,按提示運行就可以了
2、新建一個web網(wǎng)站
在Web.Config中加入配置:
<connectionStrings>
<add name="MySqlConnection" connectionString="Data Source=dbserver;Initial Catalog=database;user id=userid;password=****;" />
</connectionStrings>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
<authentication mode="Forms">
<forms loginUrl="login.aspx" name=".ASPXAUTH"/>
</authentication>
<membership defaultProvider="SqlProvider">
<providers>
<clear />
<add connectionStringName="MySqlConnection" applicationName="MyApplication"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
requiresUniqueEmail="true" passwordFormat="Hashed" name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>
</system.web>
主要就是指定Forms驗證使用的數(shù)據(jù)庫,如果不指定數(shù)據(jù)庫會使用本機(jī)默認(rèn)的aspnetdb 數(shù)據(jù)庫。
deny users="?"表示不允許匿名用戶訪問,也就是說當(dāng)匿名用戶訪問時自動跳轉(zhuǎn)到下面配置的login.aspx頁面。
至于authorization和authentication節(jié)的其他屬性可以參考MSDN,里面有很詳細(xì)的介紹。
3、在網(wǎng)站里創(chuàng)建Default.aspx和Login.aspx頁面
在Login.aspx頁面里面放入Login和CreateUserWizard控件(因為我們新建的庫中一個用戶也沒有,CreateUserWizard控件只是用來建立測試用戶的,建好用戶后可以把這個控件刪除)
在Default.aspx頁面中隨便放入一些內(nèi)容。
當(dāng)我們訪問Default.aspx時就會自動轉(zhuǎn)入Login.aspx進(jìn)行驗證了。
二、自定義實現(xiàn)方式
采用第一種方式時會要求建立一個數(shù)據(jù)庫,很多表,可能并不符合我們自己的業(yè)務(wù)要求。可以使用以下的自定義方式
1、利用Login控件的Authenticate事件
這個事件就是用來進(jìn)行驗證的,可以通過指定true值表示驗證通過:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
//判斷用戶名密碼是否正確
//

e.Authenticated = true;
}
新聞熱點
疑難解答
圖片精選