先要建一個(gè) asp.net 應(yīng)用程序,這里面至少要有一個(gè)登錄用的頁面,然后修改你的根目錄下的 web.config ,把驗(yàn)證那一塊改成 Forms 驗(yàn)證模式。






接下來在要保護(hù)的文件夾里放一個(gè)
web.config
,要注意的是,這個(gè)子文件夾里的
web.config
的實(shí)際內(nèi)容不能像根目錄下的那個(gè)一樣多,否則就會(huì)出現(xiàn)
“
配置錯(cuò)誤
”
,提示
“
在應(yīng)用程序級(jí)別以外使用注冊(cè)為
allowDefinition='MachineToApplication'
的節(jié)是錯(cuò)誤的。導(dǎo)致該錯(cuò)誤的原因可能是在
IIS
中沒有將虛擬目錄作為應(yīng)用程序進(jìn)行配置。
”
具體應(yīng)該怎么做我也不清楚,總之這個(gè)
web.config
只要有下面的內(nèi)容就
ok
了。












當(dāng)然也可以在
頂層
web.config
文件中完成所有的
url
授權(quán),而不是把它們分在各自目錄下的
web,config
文件中。
asp.net
也支持這種做法。下面這個(gè)
web,config
文件,放在應(yīng)用程序根目錄下。
如下:此設(shè)置是保護(hù)admin文件夾下的內(nèi)容,拒絕匿名用戶訪問








好了,設(shè)置完了,下面就開始為我們的窗體驗(yàn)證寫代碼了
有兩種方式,第一種,當(dāng)網(wǎng)站的用戶不是很多的時(shí)候,可以
把用戶和密碼放到
web.config
里。辦法就是在根目錄下的
web.config
文件中加入一個(gè)
credentials
節(jié),里面寫上用戶名和密碼,這個(gè)是包含在
forms
節(jié)里面的。
如下所示:








在此種情況下 配合使用
System.Web.Security.FormsAuthentication.Authenticate(string name,string password)
驗(yàn)證
credentials
節(jié)中
指定的用戶名和密碼,存在就返回
true。
下面著重介紹第二種方法,通過數(shù)據(jù)庫(kù)讀取用戶名密碼進(jìn)行驗(yàn)證。
1:首先在數(shù)據(jù)庫(kù)里建立三張表: Users(UserID,UserName,UserPwd)---存放用戶信息
Roles(RoleID,RoleName)------存放角色名稱
User_Role(UserID,RoleID)-----用戶和角色的中間表,使頭兩張表成為多對(duì)多關(guān)系
2:然后在登陸頁面的登陸按鈕點(diǎn)擊事件中加入如下邏輯





FormsAuthentication.RedirectFromLoginPage( txtUsername.Text, chkRemember.Checked ;


在此也可以用
FormsAuthentication.SetAuthCookie(email.Text, RememberCheckbox.Checked);該
方法不進(jìn)行頁面導(dǎo)向,而是停留在本頁,然后由自己選擇導(dǎo)向的頁面。
3:然后就要用到global.asax文件下的
Application_AuthenticateRequest
事件了,此事件在每次訪問
aspx
文件都會(huì)觸發(fā)。
在其中加入如下代碼,功能見注釋
:



















































4:然后添加讀取驗(yàn)證用戶是否存在的訪問數(shù)據(jù)庫(kù)代碼,和獲得用戶角色的代碼。
詳細(xì)碼略,這里主要爭(zhēng)對(duì)三張表寫出獲得用戶角色的存儲(chǔ)過程











至此,我們就完成了一般性的asp.net窗體驗(yàn)證的功能。
下面著重介紹第二種方法,通過數(shù)據(jù)庫(kù)讀取用戶名密碼進(jìn)行驗(yàn)證。
1:首先在數(shù)據(jù)庫(kù)里建立三張表: Users(UserID,UserName,UserPwd)---存放用戶信息
Roles(RoleID,RoleName)------存放角色名稱
User_Role(UserID,RoleID)-----用戶和角色的中間表,使頭兩張表成為多對(duì)多關(guān)系
2:然后在登陸頁面的登陸按鈕點(diǎn)擊事件中加入如下邏輯





FormsAuthentication.RedirectFromLoginPage( txtUsername.Text, chkRemember.Checked ;


在此也可以用
FormsAuthentication.SetAuthCookie(email.Text, RememberCheckbox.Checked);該
方法不進(jìn)行頁面導(dǎo)向,而是停留在本頁,然后由自己選擇導(dǎo)向的頁面。
3:然后就要用到global.asax文件下的
Application_AuthenticateRequest
事件了,此事件在每次訪問
aspx
文件都會(huì)觸發(fā)。
在其中加入如下代碼,功能見注釋
:



















































4:然后添加讀取驗(yàn)證用戶是否存在的訪問數(shù)據(jù)庫(kù)代碼,和獲得用戶角色的代碼。
詳細(xì)碼略,這里主要爭(zhēng)對(duì)三張表寫出獲得用戶角色的存儲(chǔ)過程











至此,我們就完成了一般性的asp.net窗體驗(yàn)證的功能。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
