1. 程式人生 > >ASP.NET 安全認證(三)

ASP.NET 安全認證(三)

——用Form 表單認證實現單點登入(Single Sign On

作者:寒羽楓(cityhunter172)

第三部分 實現單點登入(Single Sign On

“等了好久終於等到今天,寫了好久終於就快完結,但是網友的反應卻讓我有一些的傷心。盼了好久終於盼到今天,忍了好久終於把此文撰寫,那些受冷落的無奈早就無所謂,累也不說累”(歌詞《今天》新演繹)。看著人家的 Blog 文章的評論是一條接一條,再瞧瞧自己:“無人問津吶,真…無…奈……唉,沒人理我,還是回家吧。”“哎,還沒開始寫,怎麼就走了?回去幹什麼呢?”回去寫作業去啊,上回交待的課外作業你做了沒?(注:在第二部分第六節佈置的課外作業:此專案有兩部門使用,其中每個部門分別都有些特定的頁面僅供本部門使用者瀏覽使用,請問該如何使用

Web.config 達到效果?)

不知有多少人做了作業,其實答案並不難。只需要在驗證使用者名稱與密碼後,取得該使用者的部門名稱或部門程式碼,把它作為判斷的依據就行了。最好不要用部門的數字ID,那樣不利於以後的維護。

有一個祕密,一般人我不告訴他。Web.config 中的 <location> 節點的path 屬性可以是一張具體頁面的相對 URL 路徑,如下:<location path ="ManageSys/Auditing.aspx">

好了,接下來就要揭開“比根目錄Web.config 的作用範圍還大的配置檔案”之謎啦,它就是藏匿在 Windows 系統目錄下,支配整個

.Net Framework 配置的傳說中的Machine.config !!下面請大家以熱烈的掌聲,歡迎我們這位神祕俠客的閃亮登場……

九、Machine.config

Machine.config ,性別不詳,年齡未知,家庭出身:XML。深藏於“雲深不知處”的作業系統目錄下的某某地方(注:C:\WINDOWS【或 WINNT \Microsoft.NET\Framework\v1.1.4322【或 v1.0.3705 \CONFIG),控制著“更上一層樓”的 .NET Framework 的本機配置。接下來簡要的講解一下它的內容,以及它與 Web.config 的關係。

經過“松下問童子”,我們好不容易找到這位隱者,開啟一看,乖乖,足有

3700 多行!!“叫我怎麼能不難過,偶只想看看是啥結構,可內容實在是太多太繁瑣……”還記得偶經常對同事說的一句話麼:“辦法是人想出來的!”它不是有三千七百多行嗎,那我們就不管三七能否得出二十一啦,把它拷出來先。它不是 XML 出身嗎,那咱們就還其正身,重新命名為“machine.xml”。接著用 IE 瀏覽器將這位改頭換面的隱者開啟,把節點與註釋一一合攏。這回你看到了吧,是不是很有成就感?你要是想謝謝我,就讓我看到你在此文下面的評論吧。多多益善,呵呵。

1、 Machine.config 中的設定將作用於執行在本機的所有站點及其虛擬目錄,遇到子目錄將一直繼承下去。

2、 Web.config 中的設定將覆蓋由 Machine.config 中繼承下來的對應的節點設定

說到這,再告訴大家一個祕密 —— “世上本無祕密,知道的人多了,便成了不是祕密的祕密!”

a、 Machine.config 中的 <system.web> 節點所有內容都能出現在專案根目錄下的 Web.config 中,也就是說能在 Web.config 中的內容已經在 Machine.config 中一一列出;

b、 其中 <system.web> 節點下的 <pages> 還能出現在頁面上,如: HTML 檢視下,在WebForm1.aspx 的第一行加上<pages> 的節點內容validateRequest="false" (此句意思是不對WebForm1.aspx頁面文字框輸入的值,是否包含 < > 等等具有危險性的程式碼進行檢查,下一節將具體運用到)

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="FromTest.WebForm1" validateRequest="false" %>

十、單點登入(Single Sign On)的前提條件

之前說了這麼多關於 Machine.config 的事,都是為了實現單點登入作鋪墊,那何為單點登入(Single Sign On)?從字面理解就是在一個地方登入,通常運用於 ASP.NET 分散式環境中(跨單個伺服器上的多個應用程式或在網路場中)的 Forms 身份驗證。打個比方,就好比現在 Sohu(搜狐) Chinren(中國校友錄) 的做法,我在 Sohu 登入以後就不需要在 Chinaren 登入了。臺灣與香港又把 Single Sign On 稱之為“單一登入”。

要想實現此功能,首要條件是需要一組用於加密與驗證加密的金鑰。它們位於 Machine.config 中,修改<system.web> 節點下的 <machineKey> 節點屬性,如下:

    <machineKey firstKey="172" copyrightKey="Cityhunter172" validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****MAILTO**[email protected]*COM*****F2F286CDCB15A9D1D4535E16DB0248026939" secondKey="meibu" decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" thirdKey="com" />

1、 validationKey 為用於驗證加密資料的金鑰。最小長度為 40 個字元(20 位元組),最大長度為 128 個字元(64 位元組)。

2、 decryptionKey 為用於加密資料的金鑰。長度只有 16 個字元(8 位元組)與 48 個字元(24 位元組)兩種。

3、 validation 為用資料驗證使用的加密型別。擁有“SHA1MD53DES”三種方法

4、 大夥參照上述 <machineKey> 試著在WebForm1.aspx執行下列語句:

this.TextBox2.Text ="ht"+"tp"+"://"+firstKey+"."+secondKey +"."+thirdKey

大家在修改之前請先備份一下 Machine.config ,到時要是出錯可別怪我沒提醒你。以上金鑰並不是胡亂得來的,接下來向大家介紹生成金鑰的方法。

我們把上一節中提到的 WebForm1.aspx 拖入本專案的 Public 目錄下,再往頁面上拖入一個 TextMode=MultiLine TextBox3 與一個 Button 編寫按鈕事件與函式:

         private void Button1_Click(object sender, System.EventArgs e)

         {

              string decStr = this.CreateKeyString(int.Parse(this.TextBox1.Text));

              string valStr = this.CreateKeyString(int.Parse(this.TextBox2.Text));

              this.TextBox3.Text=string.Format("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>",valStr,decStr);

     }

         /// <summary>

         /// 生成加密型強隨機 Key 值

         /// </summary>

         /// <param name="i">Key 的有效長度:

         /// decryptionKey 的有效值為 8 或 24;

         /// validationKay 的有效值為 20 至 64

         /// </param>

         private string CreateKeyString(int i)

         {

              System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); //加密隨機數生成器

              byte[] bt = new byte[i];

              rng.GetBytes(bt);//用加密型強隨機值序列填充位元組陣列

              System.Text.StringBuilder str = new System.Text.StringBuilder();

              for(int j= 0;j<i;j++)

              {

                   str.Append(string.Format("{0:X2}",bt[j])); //轉換成大寫的十六進位制文字

              }

              return str.ToString();

         }

每次點選按鈕生成金鑰都不同,大家不妨多點幾次。切換至 HTML 檢視,到WebForm1.aspx 第一行把 validateRequest="false" 去掉,然後再多點幾次 Button1試試,看看會有什麼效果,嘿嘿………

十一、單點登入(Single Sign On)的站點示例

將上述 TextBox3 產生的文字,覆蓋Machine.config 中的,現在你的機器已經具備了單點登入的條件。大夥可以再新建一個專案 FormTest2 ,從 FormTest2 登入後直接輸入 FormTest 中的Default.aspx 的網址(http://localhost/FormTest/ Default.aspx),反之亦可。

下面結合例項講解:偶在山東每步科技網站申請了一個免費二級域名 172.meibu.com,並下載了每步的 4.0 版的動態域名解析客戶端。現在使用 ADSL 拔號上網,也就是說我的電腦已經成了 Web 伺服器,同時支援 SQL Server Oracle 空間高達 200 G 想怎麼弄就怎麼弄,夠牛吧,嘿嘿。佈署上來的專案有環勝數碼網站、許可權管理系統、IT 內部管理網,以上三個專案是偶一人全權開發的。所謂全權就是從資料庫儲存過程寫到 .cs 程式碼再到 javascript ,最後到美工都是偶一手搞定的。^_^ 我把這三個不相干的專案做成了單點登入的模式,加上整合站點的主頁面,共有四個地方可以進行登入。因為使用者 Table 的結構不同,因此只有一個入口能在進入後,在跳轉站點時不會出錯,那就是在整合頁面登入。

現在我想把環勝數碼這個站點單獨脫離出來,而剩下的兩個站點繼續實現單點登入,該怎麼做呢?或者是我的 ASP.NET 的空間是租的,服務商肯定不可能讓我修改 Machine.config ,我又咋辦哩?“辦法是人想出來滴!!”,根據上述 Machine.config Web.config 的關係,我們可以把 <machineKey> 節點放入專案根目錄下Web.config <system.web> 節點。如下:

1、 許可權管理系統專案的 Web.config 用於 Form 認證的設定

<machineKey validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****MAILTO**[email protected]*COM*****F2F286CDCB15A9D1D4535E16DB0248026939" decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" />

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name="172.MEIBU.COM_WARRANT"></forms>

</authentication>

<authorization><deny users="?"></deny></authorization>

2、 IT 內部管理網專案的 Web.config 用於 Form 認證的設定

<machineKey validationKey="AD117F2F286CDCB15A9D1D4535E16DB0248026939**AUTHOR**CITYHUNTER172****WEBSITE**172*MEIBU*COM****MAILTO**[email protected]*COM*****F2F286CDCB15A9D1D4535E16DB0248026939" decryptionKey="3C89AE62AD117F2F286CDCB15A9D1D4535E16DB0248026939" validation="SHA1" />

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name="172.MEIBU.COM_IT"></forms>

</authentication>

<authorization><deny users="?"></deny></authorization>

大家可能會迫不急待的去試一把,偶贊成這樣的做法,因為事實是檢驗真理的唯一辦法。你不去試著自己動手,光看我在這說是很難提高的。先別急,我已經知道你想說什麼,聽聽我慢慢向你解釋:

a)兩個專案Web.cinfig<machineKey> 節點確保以下幾個欄位完全一樣:validationKey decryptionKey validation

b)兩個專案的 Cookie 名稱必須相同,也就是 <forms> 中的 name 屬性,這裡我們把它統一為 name ="172.MEIBU.COM_PROJECT"

c)注意區分大小寫

在整合的過程中,我把遇到的問題向大夥說一下,以免你們走同樣的路。

1)首先應該是使用者管理的問題,把兩個專案的使用者整合在一起,可不是一件容易的事,原則是新建一個新的 Table 只存放帳號與密碼,用賬號做關聯,編寫觸發器,做到 Table 之間的同步;

2)不要指望兩個專案間用 Session 進行傳值,兩個應用程式的 Session 是無法共享的。網上有人曾把類庫(編譯後的 .dll 文件)放入同一個 bin 資料夾實現過 Session 共享,這樣的做法實際上是把兩個專案變相合併成一個應用程式,不是我們所想要的,理由很簡單:Sohu Chinaren 的伺服器分處兩地該怎麼辦?

3)專案間的傳值,可用 Cookie 實現。在第一部分的第三節()我們介紹了只要執行 System.Web.Security.FormsAuthentication.SetAuthCookie 方法即可實現登入,單點登入的實質就是含有身份驗證票的 Cookie 能在專案間共用。

接下來,有必要向大家介紹一下 Cookie .Net 中的用法。

十二、Cookie ASP.NET 中的用法

大家也許和我一樣,很少在 ASP.NET 中使用 Cookie ,傳引數呀,存變數呀,用的比較多的是 Session ViewState 以及隱藏控制元件,有的乾脆用“ ? ”的請求方式。

1、 Cookie 存放的目錄

      2、 Cookie 的有效期

      2、 Cookie 的有效期

      2、 Cookie 的有效期

從上圖我們可以清楚的看到每個 Cookie 文件的“截止期”(即為有效期)。在有效期內,當登入計算機的使用者 Administrator 再次訪問 172.meibu.com 時,那麼 IE 就會在請求頁面的同時,連同上述的名稱為“Cookie:[email protected]”的Cookie 文件內容一起傳送給伺服器。

若該文件包含多個 Cookie 的值時,截止期則以最後的失效期為準。

3、 Cookie 的型別

這裡我們按有效期來分,分為兩種:

a)即時型

指的是關閉瀏覽器(所有瀏覽 172.meibu.com IE)後,Cookie 便失效,此類 Cookie 不會在“Temporary Internet Files”目錄出現。其實它也有截止期的,為“0001-01-01

b)持久型

就是已指定具體“截止期”的,能夠在“Temporary Internet Files”目錄裡面找到的 Cookie

4、 Cookie 的內容

 

 

上圖中,“■”是換行符,你若是要打破什麼鍋來問我到底是怎麼知道的話。我倒是會很樂意的告訴你:這就是經驗!偶從學習 C# 那刻起,就拿第一個 Windows 程式 —— 記事本 來開刀,儲存文件時得來的經驗。

 

 

5、 ASP.NET 頁面發放 Cookie

傳送上述 Cookie .cs 程式碼為:

              System.Web.HttpCookie ck = new HttpCookie("ckValue0");

              ck["Author"] ="CityHunter";

              ck.Expires = System.DateTime.Now.AddMinutes(10);//若不指定,則為即時型 Cookie

//ck.Path="/FormTest/ManageSys"; //設定 Cookie 的虛擬路徑,注意一定要以“/”開頭,否則為無效 Cookie ;請大家自行看一下它與在客房端的 Cookie 文件“名稱”與 “Internet 地址”的關係

              Response.Cookies.Add(ck);

              ck = new HttpCookie("ckValue1"); //重新新建一個名為 ckValue1 的 Cookie

              ck.Expires = System.DateTime.Now.AddMinutes(20);   //即刻起 20 分鐘後失效

              ck["E_Mail"] ="[email protected]";         //設定 ckValue1 中的 E_Mail 值

              ck["PersonalWeb"] ="172.meibu.com";

     Response.Cookies.Add(ck);   //新增此 Cookie

6、 取回已發放 Cookie 的值

Response.Write(Request.Cookies["ckValue0"]["Author"]+"<br>");//用不著說明了吧

Response.Write(Request.Cookies["ckValue1"]["E_Mail"]+"<br>");

Response.Write(Request.Cookies["ckValue1"]["PersonalWeb"]);

好久沒有出作業啦(何出此言?),這第三篇呀,可是花了偶兩個星期的業餘時間除錯、總結、撰寫哪,都說時光貴如金,不知我花的這些時間能換來多少銀子?換銀子,我看是沒指望啦,能得到閣下的一句評論,偶也滿足了。記住,你的評論就是偶繼續寫下去的動力。

作業:給 Cookie 賦於以下值,怎樣得到它的正確值

              ck["str1"] ="2222";

              ck["str"] ="str0=11111&str1=223";

可以肯定的是Request.Cookies["ckValue1"]["str"] 得不到 str0=11111&str1=223這個字串,大家不妨試一下 Request.Cookies["ckValue1"]["str1"] 會得到意想不到的字串喲。

提示:使用 Server.UrlEncode()Server.UrlDecode()

十三、發放永久性的驗證 Cookie

終於……終於……最後一個章節,驀然回首,洋洋灑灑十二章。沒想到年少時寫不完作文的偶,居然也能編出幾千餘字的文章來呀,不得不佩服偶自己呀!再回首,一大片暈倒的人……。永遠到底有多遠?永久究竟是多久?只有天知道

大家登入 CSDN的時候是否留意到一個“2 周內不用再登入”的複選框,它又是怎麼做到的呢?大家是否曾遇到過這樣的困惑:在執行System.Web.Security.FormsAuthentication.SetAuthCookie 時明明已指定createPersistentCookie true 為何關閉瀏覽器仍不能直接訪問網站?下面我們就這個問題給大家解釋一下,且介紹如何手工建立身份驗證票並加入 Cookie 中。

     System.Web.Security.FormsAuthenticationTicket tk = new System.Web.Security.FormsAuthenticationTicket(

         1,                 //指定版本號:可隨意指定

"Admin", //登入使用者名稱:對應 Web.config 中 <allow users="Admin" … /> 的 users 屬性

         System.DateTime.Now,   //釋出時間

         System.DateTime.Now.AddYears(100),   //失效時間:100 年以後,夠永夠久了吧

false,   //是否為持久 Cookie:尚未發現有何用,至少目前偶還不知,下面會有說明

"測試使用者資料"//使用者資料:可用 ((System.Web.Security.FormsIdentity)User.Identity).Ticket.UserData 獲取

         );

string str = System.Web.Security.FormsAuthentication.Encrypt(tk);//加密身份驗票

     //宣告一個 Cookie,名稱為 Web.config 中 <forms name=".APSX" … /> 的 name 屬性,對應的值為身份驗票加密後的字串

     System.Web.HttpCookie ck = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,str);        

     //指定 Cookie 為 Web.config 中 <forms path="/" … /> path 屬性,不指定則預設為“/”

     ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;

//此句非常重要,少了的話,就算此 Cookie 在身份驗票中指定為永續性 Cookie ,也只是即時型的 Cookie 關閉瀏覽器後就失效;因此上面我說:我是真的還不知在身份驗票中指定為永續性 Cookie 有何用。

     ck.Expires = System.DateTime.Now.AddYears(100);

Response.Cookies.Add(ck); //新增至客房端

後記

此係列文章共三部分,歷時一個月完成(2005-11-05 ~ 2005-12-06)。以上是我學習並用於實踐的一些經驗,在此拿出來與大家一起分享。程式碼都是經過除錯的,如有任何疑問,可在 CSDN 論壇(http://community.csdn.net/)找到我,我的 ID cityhunter172 (可用此 ID 發短訊息給我),暱稱為 寒羽楓,歡迎大家批評指正。

另,發現有個別網站在轉載我的文章時,不僅刪了其中一些內容,最不能容忍的是沒有標明作者,更沒有找到出處。在此,再次希望大家在轉載時,請務必註明作者為“寒羽楓(cityhunter172”,謝謝。

相關推薦

ASP.NET 安全認證

——用Form 表單認證實現單點登入(Single Sign On) 作者:寒羽楓(cityhunter172) 第三部分 實現單點登入(Single Sign On) “等了好久終於等到今天,寫了好久終於就快完結,但是網友的反應卻讓我有一些的傷心。盼了好久終於盼到今天,

ASP.NET 安全認證—— 如何運用 Form 表單認證 摘自 http://blog.csdn.net/cityhunter172

ASP.NET 安全認證(一)——如何運用 Form 表單認證作者:寒羽楓(cityhunter172)序程式碼寫 N 久了,總想寫得別的。這不,上頭說在整合兩個專案,做成單一登入(Single Sign On),也有人稱之為“單點登入”。查閱相關文件後,終於實現了,現在把它

ASP.NET 安全認證:如何運用 Form 表單認證

程式碼寫 N 久了,總想寫得別的。這不,上頭說在整合兩個專案,做成單一登入(Single Sign On),也有人稱之為“單點登入”。查閱相關文件後,終於實現了,現在把它拿出來與大家一起分享。或許大家會問:“這與標題不符呀?”別急,在下筆之前,我腦子裡想到了我剛使用 Form

ASP.NET 安全認證——巧妙實現 Form 表單認證跨站點、跨伺服器的單點登入Single Sign On

【原創】ASP.NET 安全認證(四) ——巧妙實現 Form 表單認證跨站點、跨伺服器的單點登入(Single Sign On) 作者:寒羽楓(cityhunter172) 第四部分 Form 認證的補充 前三篇在 CSDN 論壇公佈後,效果如同“神仙放屁——果然不同

ASP.NET Web API安全驗證之使用摘要認證(digest authentication)

在前一篇文章中,主要討論了使用HTTP基本認證的方法,因為HTTP基本認證的方式決定了它在安全性方面存在很大的問題,所以接下來看看另一種驗證的方式:digest authentication,即摘要認證。 系列文章列表 摘要認證原理 在基本認證的方式中,主要的安全問題來自於使用者資訊的明文傳輸,而

ASP.NET 安全認證Form 認證

第三部分實現單點登入(Single Sign On)  “等了好久終於等到今天,寫了好久終於就快完結,但是網友的反應卻讓我有一些的傷心。盼了好久終於盼到今天,忍了好久終於把此文撰寫,那些受冷落的無奈早就無所謂,累也不說累”(歌詞《今天》新演繹)。看著人家的 Blog文章的評論是一條接一條,再瞧瞧自己:“無人

探秘如何操作 ASP.NET Web API

asp ajax請求 log pic margin div 判斷 out turn 經過我三篇文章的解惑,webapi我相信大家沒有問題了! 先創建了一個UserModel public class UserModel { public string UserI

ASP.NET MVC 學習-- MVC中的資料夾

MVC 程式設計模型 MVC 是用於構建 web 應用程式的一種框架,使用 MVC (Model View Controller) 設計: Model(模型)表示應用程式核心(比如資料庫記錄列表) View(檢視)對資料(資料庫記錄)進行顯示 Controller(控

ASP.NET Core系列:啟動類Startup

前面講了ASP.NET Core 的專案結構,檢視完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html ASP.NET Core 裡面一個比較重要的就是Startup.cs 類,包括載入配置,

ASP.NET Web API安全驗證之使用HTTP基本認證

在前一篇文章ASP.NET Web API(一):使用初探,GET和POST資料中,我們初步接觸了微軟的REST API: Web API。 我們在接觸了Web API的後就立馬發現了有安全驗證的需求,所以這篇文章我們先來討論下安全驗證一個最簡單的方法:使用HTTP基本

應用程式框架實戰十三:表現層及ASP.NET MVC介紹

  最近的更新速度越來越慢,主要是專案上比較忙,封裝EasyUi也要花很多時間。不過大家請放心,本系列不會半途夭折,並且程式碼乾貨也會持續更新。本文繼續介紹表現層和Asp.net Mvc,我將在本篇討論一些重要的設計問題和封裝技巧。 是否需要將控制器分離為獨立專案   經常有人問我,是否有必要將控制器從W

應用程式框架實戰十:表現層及ASP.NET MVC介紹

  本文將介紹表現層及ASP.NET MVC的一些要點,特別是ASP.NET MVC的一些抽象和封裝技巧,如果你對MVC還不瞭解,可以參考《ASP.NET MVC4 高階程式設計》,作者Jon Galloway等,這本書由ASP.NET MVC團隊成員編寫,相當不錯。 表現層的職責   表現層的職責是展示

不使用Visual Studio開發ASP.NET MVC應用下篇

構建 onf log rdquo 你們 err ica ide lan 書接上回! 前文“純手工”、徹底拋棄Visual Studio,制作了一個ASP.NET MVC應用,運行起來還不錯,項目目錄、源代碼、web.config等所有東西都已經做到

Asp.net Security框架2

默認 隨機 async 技術分享 希望 win 認證 用戶認證 uget Asp.net 的Security框架除了提供Cookies,OAuth,ActiveDirectory等多個用戶認證實現,基本上已經滿足業務項目的開發需要了。 當需要實現OAuth2.0服務器端實現

小白學習安全測試——掃描工具-Nikto使用

sdn plugins 技術 use 開發 服務器 update 自動 網站目錄 掃描工具-Nikto #基於WEB的掃描工具,基本都支持兩種掃描模式。代理截斷模式,主動掃描模式 手動掃描:作為用戶操作發現頁面存在的問題,但可能會存在遺漏 自動掃描:基於字典,提高速度,但存

ASP.NET學習筆記4——上傳圖片

bmi guid ted 介紹 dir filename content put ima 說明(2017-10-8 23:03:43): 1. 後面的內容都是一些雜七雜八的,零零碎碎的,之前都直接略過了,不過其實還是挺重要的,這次重新學習要認認真真敲一遍。 2. 明天中午9

Asp.Net Web API

default exceptio 服務器 路由 回復 事情 http響應 images art 創建一個Web API項目 第一步,創建以下項目 當然,你也可以創建一個Web API項目,利用 Web API模板,Web API模板使用 ASP.Net MVC提供AP

ASP.NET學習筆記6——jQuery的Ajax基本操作

stat password ash page serve () c# content scrip 說明(2017-11-5 15:49:29): 1. jQuery裏封裝了三個方法,$.get,$.post和$.ajax,其中$.ajax是返回原生的XMLHttpReque

cas單點登錄-jdbc認證

warn uil 單向加密 admin rom hibernate con als salt 前言 本節的內容為JDBC認證,查找數據庫進行驗證,其中包括: 密碼加密策略(無密碼,簡單加密,加鹽處理) 認證策略(jdbc) 一、業務需求 不同的公司,需求業務需求或者架

asp.net緩存

鏈接 http 不變 moved nbsp oca scripts ati 需要 原文地址 http://www.cnblogs.com/knowledgesea/archive/2012/07/10/2530436.html 謝謝 一、緩存概念,緩存的好處、類型。