ASP.NET提供了3種認(rèn)證方式:windows身份驗(yàn)證、Forms驗(yàn)證和Passport驗(yàn)證。
windows身份驗(yàn)證: IIS根據(jù)應(yīng)用程序的設(shè)置執(zhí)行身份驗(yàn)證。要使用這種驗(yàn)證方式,在IIS中必須禁用匿名訪問。
Forms驗(yàn)證:用Cookie來保存用戶憑證,并將 未經(jīng)身份驗(yàn)證的用戶重定向到自定義的登錄頁。
Passport驗(yàn)證:通過Microsoft的集中身份驗(yàn)證服務(wù)執(zhí)行的,他為成員站點(diǎn)提供單獨(dú)登錄和核心配置文件服務(wù)。
關(guān)于這三種驗(yàn)證方式的配置,推薦一篇文章:https://www.jb51.net/article/30510.htm
我這里詳解Forms驗(yàn)證方式,在ASP.NET項(xiàng)目中的實(shí)際應(yīng)用與深度理解。
對于ASP.NET驗(yàn)證機(jī)制在項(xiàng)目開發(fā)中運(yùn)用,會使項(xiàng)目非常方便快捷的實(shí)現(xiàn)頁面的訪問權(quán)限問題,而且省去了一些沒必要的安全問題。
對于ASP.NET提供的驗(yàn)證機(jī)制,要深度的理解后才能靈活的運(yùn)用。對于整個(gè)項(xiàng)目的訪問權(quán)限,有時(shí)候我們需要對部分頁面的訪問權(quán)限進(jìn)行限制,又不影響其他公共頁面的訪問。舉個(gè)實(shí)際項(xiàng)目的例子。
案例:有一個(gè)ASP.NET的項(xiàng)目,對整個(gè)項(xiàng)目訪問限制,不允許匿名用戶訪問,登錄頁面除外。
問題是,登錄頁面(假設(shè)是:Manager目錄下的Login.aspx文件)中應(yīng)用的Script的的一個(gè)文件(假設(shè)這個(gè)文件是:Script/jquery-1.7.1.min.js)
1.web.config配置文件
復(fù)制代碼 代碼如下:
!--配置Forms身份認(rèn)證 不允許匿名用戶訪問,否則跳轉(zhuǎn)到/Manager/login.aspx 頁面 -->
authentication mode="Forms">
forms name="myTeacher" loginUrl="~/Manager/login.aspx" protection="All" path="/" timeout="60">/forms>
/authentication>
authorization>
deny users="?"/>
/authorization>
現(xiàn)在我們可以理解為:當(dāng)用戶打開程序時(shí),會自動轉(zhuǎn)到Manager/login.aspx頁面,但是這個(gè)頁面引用的jquery-1.7.1.min.js文件是不可用的。因?yàn)椋拗屏怂械哪涿脩糁荒茉L問Login.aspx頁面,只有當(dāng)注冊票據(jù)之后其它的頁面或文件才能正常訪問。所以當(dāng)匿名用戶需要有權(quán)限訪問jquery-1.7.1.min.js文件,就需要設(shè)置某個(gè)文件或者文件的訪問權(quán)限為所有用戶。
復(fù)制代碼 代碼如下:
!--允許所有用戶訪問Script文件夾-->
location path="Script">
system.web>
authorization>
allow users="*" />
/authorization>
/system.web>
/location>
path可以只想某個(gè)具體的文件,比如"Script/Script/jquery-1.7.1.min.js",這里設(shè)置“Script”文件夾表示,允許匿名用戶訪問“Script”文件夾下面的所以文件
復(fù)制代碼 代碼如下:
!--
定義 ASP.NET身份驗(yàn)證機(jī)制
-->
!--允許所有用戶訪問Script文件夾-->
location path="Script">
system.web>
authorization>
allow users="*" />
/authorization>
/system.web>
/location>
system.web>
customErrors mode="Off" defaultRedirect="../error.aspx"/>
!--配置Forms身份認(rèn)證 不允許匿名用戶訪問,否則跳轉(zhuǎn)到/Manager/login.aspx 頁面 -->
authentication mode="Forms">
forms name="myTeacher" loginUrl="~/Manager/login.aspx" protection="All" path="/" timeout="60">/forms>
/authentication>
authorization>
deny users="?"/>
/authorization>
2.登錄注冊票據(jù)
當(dāng)?shù)卿涰撁娴卿浱峤徊⒌卿洺晒?,注冊票?jù),當(dāng)注冊票據(jù)之后,相當(dāng)于當(dāng)前用戶的身份已經(jīng)不是匿名用戶,沒有了訪問權(quán)限的限制。FormsAuthentication的命名空間是:using System.Web.Security;
FormsAuthentication.RedirectFromLoginPage(UserID, false); //頁面注冊 關(guān)鍵 UsersID表示登錄ID
3.撕毀票據(jù)(退出系統(tǒng))
FormsAuthentication.SignOut(); //撕毀票據(jù) 退出登錄
您可能感興趣的文章:- MVC使用Spring.Net應(yīng)用IOC(依賴倒置)學(xué)習(xí)筆記3
- Spring學(xué)習(xí)筆記1之IOC詳解盡量使用注解以及java代碼
- 深入理解Java的Spring框架中的IOC容器
- 淺析Java的Spring框架中IOC容器容器的應(yīng)用
- Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法
- Spring框架生成圖片驗(yàn)證碼實(shí)例
- Spring學(xué)習(xí)筆記2之表單數(shù)據(jù)驗(yàn)證、文件上傳實(shí)例代碼
- php自動注冊登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼
- js 第二代身份證號碼的驗(yàn)證機(jī)制代碼
- 利用Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制