Froms驗證的具體介紹(中篇)

來源:互聯網
上載者:User

 

 

  啟用Forms身分識別驗證

  相信大家對很清楚如何啟用 Forms驗證,但是這裡我還是羅嗦一下。我們只要在 web.config檔案中配置如下就行了:

<authentication mode="Forms"/>

  這樣之後,ASP.NET運行時就知道我們啟用了Forms驗證,在生命週期的驗證階段就啟用FormsAuthenticationModule模組。還有一點要特別注意:<authentication/>元素節點只能在應用程式的根資料夾中的 web.config中配置。如果在子檔案夾中使用這個節點就會報錯。這也說明了每個應用程式只能定義一個身分識別驗證類型。
 
       而且在<authentication/>節點中,我們還可以進行更多的設定。如下:

<authentication mode="Forms ">
<forms name="MyCookie"
loginUrl="Login.aspx"
timeout="60"
path="/"
protection="All">
</forms>
</authentication>

  我們下面就看看<forms>節點中的屬性的含義和用途:

  name:定義身分識別驗證cookie的名稱。因為我們把身分識別驗證的票據是存放在cookie中的,而且我們必須給身分識別驗證cookie取具有唯一性的名稱,防止和其他的應用程式中的cookie衝突。

  loginUrl:從英文名字就可以知道是關於登入的。實際上就是標明把使用者重新導向到哪個頁面取登入。

  timeout:設定身分識別驗證cookie持續的時間,以分鐘為單位的。而且這個時間是一個相對的時間,就是說每次對使用者進行驗證時,cookie的期限就會被重新設定。如果在60分鐘內使用者再沒有向伺服器發起請求,那麼cookie就到期,之後如果使用者再次發起請求,那麼就要重新輸入使用者名稱和密碼等資訊。

  path:設定cookie的儲存的路徑,一般是設定為"/",我們不要輕易的改變。

  我們之前也說過,我們的身分識別驗證的票據是加密以後再存放如cookie中的,然後再把cookie發送到用戶端。當用戶端再次請求的時候,再伺服器端就會解析用戶端發送來的cookie資訊,我們必須要確認:用戶端發送來的cookie資訊就是我們之前從伺服器端發送過去的,也就是說,我們要判斷,我們的 cookie在用戶端是否被篡改了。

  所以,這就是<forms/>中屬性protection的用途。protection的值有四個:

  Encryption:對cookie的內容資訊進行加密。
  Validation:向cookie中的內容添加MAC(訊息驗證碼),以便伺服器判斷cookie是否被篡改了。
  None:禁用加密和篡改檢查
  All:同時啟用加密和篡改檢查。
  預設情況下是"All",因為它可以把資料加密放入cookie中,而且對返回到伺服器端的cookie進行驗證。

  啟用Forms身分識別驗證

  相信大家對很清楚如何啟用 Forms驗證,但是這裡我還是羅嗦一下。我們只要在 web.config檔案中配置如下就行了:

<authentication mode="Forms"/>

  這樣之後,ASP.NET運行時就知道我們啟用了Forms驗證,在生命週期的驗證階段就啟用FormsAuthenticationModule模組。還有一點要特別注意:<authentication/>元素節點只能在應用程式的根資料夾中的 web.config中配置。如果在子檔案夾中使用這個節點就會報錯。這也說明了每個應用程式只能定義一個身分識別驗證類型。
 
       而且在<authentication/>節點中,我們還可以進行更多的設定。如下:

<authentication mode="Forms ">
<forms name="MyCookie"
loginUrl="Login.aspx"
timeout="60"
path="/"
protection="All">
</forms>
</authentication>

  我們下面就看看<forms>節點中的屬性的含義和用途:

  name:定義身分識別驗證cookie的名稱。因為我們把身分識別驗證的票據是存放在cookie中的,而且我們必須給身分識別驗證cookie取具有唯一性的名稱,防止和其他的應用程式中的cookie衝突。

  loginUrl:從英文名字就可以知道是關於登入的。實際上就是標明把使用者重新導向到哪個頁面取登入。

  timeout:設定身分識別驗證cookie持續的時間,以分鐘為單位的。而且這個時間是一個相對的時間,就是說每次對使用者進行驗證時,cookie的期限就會被重新設定。如果在60分鐘內使用者再沒有向伺服器發起請求,那麼cookie就到期,之後如果使用者再次發起請求,那麼就要重新輸入使用者名稱和密碼等資訊。

  path:設定cookie的儲存的路徑,一般是設定為"/",我們不要輕易的改變。

  我們之前也說過,我們的身分識別驗證的票據是加密以後再存放如cookie中的,然後再把cookie發送到用戶端。當用戶端再次請求的時候,再伺服器端就會解析用戶端發送來的cookie資訊,我們必須要確認:用戶端發送來的cookie資訊就是我們之前從伺服器端發送過去的,也就是說,我們要判斷,我們的 cookie在用戶端是否被篡改了。

  所以,這就是<forms/>中屬性protection的用途。protection的值有四個:

  Encryption:對cookie的內容資訊進行加密。
  Validation:向cookie中的內容添加MAC(訊息驗證碼),以便伺服器判斷cookie是否被篡改了。
  None:禁用加密和篡改檢查
  All:同時啟用加密和篡改檢查。
  預設情況下是"All",因為它可以把資料加密放入cookie中,而且對返回到伺服器端的cookie進行驗證。

  使用者資訊的儲存

  我們一般把使用者的資訊,如使用者名稱和密碼存放在資料庫中。如之前一篇文章說的,我們也可以把使用者的使用者名稱和密碼資訊直接放在web.config檔案中。 Forms驗證其實對把使用者憑證資訊放在哪裡提供了很大的靈活性。預設情況下是放在web.config中的。如下代碼:

<authentication mode="Forms ">
<forms name="MyCookie"
loginUrl="Login.aspx"
timeout="60"
path="/"
protection="All">
<credentials>
<user name="xiaoyang" password="xiaoyang"/>
<user name="panyan" password="panyan"/>
</credentials>
</forms>
</authentication>

見上面的  <credentials>節點,就是我們存放的使用者資訊。上面的資訊是以明文(沒有加密)的形式存放。我們也採用加密的方式存放,只要配置如下:<credentials  passwordFormat="MD5">,配置 passwordFormat的加密方式就行了。那麼使用者在傳輸之前就會被加密。
 
  還有就是把使用者資訊儲存在資料庫中,我們後面會講述的,也是最常用的方式。

  web.config配置的一些用法

  1.在web.config中添加使用者憑證
  我們之前說過了,ASP.NET的身分識別驗證中,對於如何儲存使用者憑證提供了很大的靈活性。預設情況下是把憑證儲存在web.config中的。
  我們還是來看看之前配置的一些節點資訊:

<authentication mode="Forms ">
<forms name="MyCookie"
loginUrl="Login.aspx"
timeout="60"
path="/"
protection="All">
<credentials>
<user name="xiaoyang" password="xiaoyang"/>
<user name="panyan" password="panyan"/>
</credentials
</forms>
</authentication>

  在<credentials>中就是我們儲存的使用者的一些資訊。不知道大家是否還記得我們之前已經說過了的Authenticate方法:只有把使用者資訊存放在了設定檔中,我們才可以使用這個方法,代碼如下(判斷提交的使用者資訊是否合法):
  bool IsAuthenticate= FormsAuthentication.Authenticate(userName, userPassword);
 
  2.拒絕匿名使用者存取
  其實這是與使用者授權的問題現關聯的,關於授權問題,我們以後談,這裡只是簡單的提下,算是預熱吧!
我們可以拒絕匿名使用者存取我們的網站,只要配置如下:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.