ASP.NET身份驗(yàn)證的探討

成都創(chuàng)新互聯(lián)專注于中衛(wèi)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供中衛(wèi)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),中衛(wèi)網(wǎng)站制作、中衛(wèi)網(wǎng)頁(yè)設(shè)計(jì)、中衛(wèi)網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造中衛(wèi)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供中衛(wèi)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

最近項(xiàng)目要調(diào)用其他人的登錄API程序,其中涉及到了身份驗(yàn)證(之前沒(méi)有用過(guò)ASP.NET的身份驗(yàn)證),開(kāi)始調(diào)試時(shí)身份驗(yàn)證都是有值的,調(diào)試時(shí)

ASP.NET身份驗(yàn)證的探討

 (PC-5\Administrator為本地計(jì)算機(jī)名字)

但是到了真正發(fā)布到IIS時(shí),身份驗(yàn)證的值卻沒(méi)有了。后來(lái)查看了一些文章,才發(fā)現(xiàn)這是和ASP.NET的身份驗(yàn)證有關(guān)。

    微軟官方對(duì)ASP.NET的身份驗(yàn)證分為以下幾種,
<authentication
   mode="[Windows|Forms|Passport|None]">

其中屬性描述為:

屬性

說(shuō)明

mode

必選的屬性。

指定應(yīng)用程序的默認(rèn)身份驗(yàn)證模式。此屬性可以為下列值之一。

說(shuō)明

Windows

將 Windows驗(yàn)證指定為默認(rèn)的身份驗(yàn)證模式。將它與以下任意形式的 Microsoft Internet信息服務(wù) (IIS)身份驗(yàn)證結(jié)合起來(lái)使用:基本、摘要、集成 Windows身份驗(yàn)證 (NTLM/Kerberos)或證書(shū)。在這種情況下,您的應(yīng)用程序?qū)⑸矸蒡?yàn)證責(zé)任委托給基礎(chǔ) IIS。

Forms

將 ASP.NET基于窗體的身份驗(yàn)證指定為默認(rèn)身份驗(yàn)證模式。

Passport

將 Microsoft Passport Network身份驗(yàn)證指定為默認(rèn)身份驗(yàn)證模式。

None

不指定任何身份驗(yàn)證。您的應(yīng)用程序僅期待匿名用戶,否則它將提供自己的身份驗(yàn)證。

默認(rèn)值為 Windows。

 

如果是使用身份驗(yàn)證為Windows,由于官方說(shuō)將結(jié)合IIS進(jìn)行身份驗(yàn)證,那么就要額外配置發(fā)布后的IIS,因?yàn)镮IS默認(rèn)為匿名用戶登錄,并不采用身份驗(yàn)證。所以如果是本地進(jìn)行調(diào)試的話,身份驗(yàn)證就是使用本機(jī)的Windows身份,而發(fā)布到IIS的就是使用IIS的身份驗(yàn)證,但是IIS如果未配置身份認(rèn)證,默認(rèn)采用匿名登錄,那么身份認(rèn)證就不會(huì)起作用了。

測(cè)試代碼:

if (HttpContext.Current.User.Identity.IsAuthenticated)

        Label1.Text ="已驗(yàn)證,現(xiàn)在身份驗(yàn)證名字:" +HttpContext.Current.User.Identity.Name;

else

       Label1.Text="未驗(yàn)證,現(xiàn)在身份驗(yàn)證名字:" + HttpContext.Current.User.Identity.Name;

發(fā)布到IIS服務(wù)器沒(méi)有配置身份驗(yàn)證,出現(xiàn)的結(jié)果:


ASP.NET身份驗(yàn)證的探討

發(fā)布到IIS服務(wù)器并配置身份驗(yàn)證,會(huì)出現(xiàn)windows登錄窗口,輸入windows用戶,

ASP.NET身份驗(yàn)證的探討

出現(xiàn)的結(jié)果是


ASP.NET身份驗(yàn)證的探討

      通過(guò)上面的測(cè)試,基本上可以明白微軟對(duì)ASP.NET的身份驗(yàn)證的Windows屬性的使用。但是對(duì)于一般網(wǎng)站而言,并不希望為每個(gè)用戶分配windows賬戶,所以這種驗(yàn)證僅適合少量安全用戶的訪問(wèn),并不適合大量的用戶訪問(wèn)。

參考文獻(xiàn):http://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html#_label5

                    http://msdn.microsoft.com/zh-cn/library/ff647076.aspx

 

  針對(duì)上述情況,微軟提出了ASP.NET的身份驗(yàn)證屬性Forms屬性,主要針對(duì)表單驗(yàn)證。簡(jiǎn)單說(shuō),F(xiàn)orms身份認(rèn)證就是為每個(gè)登錄到網(wǎng)站的用戶產(chǎn)生一個(gè)認(rèn)證標(biāo)識(shí)(一般為Cookie)。由于這種認(rèn)證集成到網(wǎng)頁(yè)表單的提交,對(duì)用戶很方便。

具體的認(rèn)證使用方法請(qǐng)參看:

http://www.cnblogs.com/xugang/archive/2010/12/08/1900135.html

http://www.xoc.net/works/tips/forms-authentication.asp

 

在這里還想說(shuō)的是,之前由于我做的程序中使用了User.Identity.IsAuthenticated屬性進(jìn)行驗(yàn)證,在調(diào)試的時(shí)候還是沒(méi)有產(chǎn)生身份驗(yàn)證。追查原因才發(fā)現(xiàn)原來(lái)在進(jìn)行表單身份驗(yàn)證的時(shí)候是需要這個(gè)方法來(lái)產(chǎn)生表單驗(yàn)證信息的,即注冊(cè)表單身份。

FormsAuthentication.SetAuthCookie(name, true);
沒(méi)有這個(gè)方法的話,就無(wú)法產(chǎn)生表單身份,而且根據(jù)文章
http://www.cftea.com/c/2011/04/UQ1T0SIOTD34ZJOG.asp
說(shuō)注冊(cè)表單身份后要進(jìn)行跳轉(zhuǎn)后才能生效。

而對(duì)于解決User.Identity.IsAuthenticated==false或User.Identity.Name==string.empty的問(wèn)題,可以參考文章

http://www.cnblogs.com/godwar/archive/2008/07/21/1247890.html

 

     最后推薦各位遇到ASP.NET身份驗(yàn)證的問(wèn)題的朋友,可以先看看這幾篇文章,會(huì)很有收獲。
  http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591795.html
http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591796.html
  http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591797.html
 

 

本文標(biāo)題:ASP.NET身份驗(yàn)證的探討
路徑分享:http://muchs.cn/article10/gehddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、ChatGPT、App開(kāi)發(fā)、定制開(kāi)發(fā)做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司