溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET身份驗證的探討

發(fā)布時間:2020-07-29 03:34:27 來源:網(wǎng)絡 閱讀:696 作者:ljf52czz 欄目:編程語言

最近項目要調(diào)用其他人的登錄API程序,其中涉及到了身份驗證(之前沒有用過ASP.NET的身份驗證),開始調(diào)試時身份驗證都是有值的,調(diào)試時

ASP.NET身份驗證的探討

 PC-5\Administrator為本地計算機名字)

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

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

其中屬性描述為:

屬性

說明

mode

必選的屬性。

指定應用程序的默認身份驗證模式。此屬性可以為下列值之一。

說明

Windows

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

Forms

ASP.NET 基于窗體的身份驗證指定為默認身份驗證模式。

Passport

Microsoft Passport Network 身份驗證指定為默認身份驗證模式。

None

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

默認值為 Windows。

 

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

測試代碼:

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

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

else

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

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


ASP.NET身份驗證的探討

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

ASP.NET身份驗證的探討

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


ASP.NET身份驗證的探討

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

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

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

 

   針對上述情況,微軟提出了ASP.NET的身份驗證屬性Forms屬性,主要針對表單驗證。簡單說,Forms身份認證就是為每個登錄到網(wǎng)站的用戶產(chǎn)生一個認證標識(一般為Cookie)。由于這種認證集成到網(wǎng)頁表單的提交,對用戶很方便。

具體的認證使用方法請參看:

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

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

 

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

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

而對于解決User.Identity.IsAuthenticated==false User.Identity.Name==string.empty的問題,可以參考文章

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

 

      最后推薦各位遇到ASP.NET身份驗證的問題的朋友,可以先看看這幾篇文章,會很有收獲。
   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
 

 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI