国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中的表格認證之一

2024-07-10 12:55:40
字體:
來源:轉載
供稿:網友

簡介

asp開發人員總是自己解決認證問題,但asp.net已經支持內置的認證功能。在本篇文章中,我們將介紹如何這二者在認證方面有什么變化,如何用很少的代碼使用formsauthentication使用網站更安全。

在asp編程中,無論是使用集成的安全協議(例如windows nt lan manager [ntlm]的尋問/應答認證協議),基本的安全協議(指純文本)還是自己創建的安全協議,其工作量都是十分驚人的。表格認證使開發人員能夠在web.config文件中存儲用戶名、口令等認證信息,當然,也可以使用你自己原來的方法,例如數據庫、xml文件或文本文件。使用表格認證最大的好處是它可以使我們無需再通過編程實現狀態跟蹤,這一部分工作由asp.net代勞了。

表格認證的背景知識

表格認證使用cookies使應用程序在用戶訪問期間對用戶進行跟蹤,asp.net處理表格認證的方法與在asp中使用的方式非常相似。當用戶通過表格認證登錄后,就會創建一個用來跟蹤用戶訪問網站期間活動的cookie。如果用戶請求一個安全的網頁,但又沒有登錄,用戶就會被引導到登錄網頁。一旦用戶通過認證,就會被引導到原來請求的頁面。

標準的表格認證設置

  • 使用的網頁:default.aspx、login.aspx、web.config。
  • 在表格認證的標準方法中,所有的用戶信息都被存儲在web.config。
  • 在互聯網服務器的根目錄下創建一個名字為standardforms的文件夾。
  • 使該文件夾成為互聯網服務管理器的一個應用。



web.config概述

web.config文件包含asp.net應用程序的所有配置設置,其理念是讓許多開發人員共同控制web應用程序,而不是由系統管理員一個人來控制。當然了,web.config中有很多的選項,但今天我們只介紹與表格認證有關的選項。

使用標準或信任方法的web.config代碼

認證

屬性描述名字:用于認證的cookie的名字。提示:如果多個應用要在同一臺計算機上使用formsauthentication,最好使用不同的名字。路徑:cookie的路徑。缺省的“/”值能夠避免路徑中的大小寫錯誤,因為在返回cookie上,瀏覽器是對大小寫敏感的。loginurl:未經認證的用戶被引導到的url。保護:用來保護cookie數據的方法。缺省和建議的值是“all”,它會進行確認和加密。timeout:cookie結束前的時間(以分鐘計)。

證書

屬性描述口令格式:口令被存儲的格式,可用的值包括clear、sha1和md5。sha1和md5是使口令在web.config文件中存儲更安全的哈希算法。用戶:用于存儲用戶名和口令。我們可以通過運行hashpasswordforstoringinconfigfile函數對口令進行哈希處理,在后面我們會演示這種方法。



授權

屬性 描述拒絕 | 允許:這一小節拒絕或允許用戶訪問站點。?代表匿名或未被認證的用戶,*表示所有的用戶。另外,它還能讓我們向某一用戶授予允許或拒絕其他用戶訪問的權限。



web.config code

<configuration>
<system.web>
<customerrors mode="off"/>
<authentication mode="forms">
<forms name="appnameauth" path="/" loginurl="login.aspx"
protection="all" timeout="30">
<credentials passwordformat="clear">
<user name="jeff" password="test" />
<user name="mike" password="test" />
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>



web.config細節

在上面的web.config中,我們配置了幾個選項。

認證

配置小節的mode屬性設置表格的認證模式,在小節中我們將name屬性指定為“appnameauth”。也許想將cookie的名字改為“hrwebauth”。

需要記住的是,如果在計算機上有多個應用,建議為每個cookie命名一個名字。

接下來,我們將path屬性設置為應用的根目錄,將loginurl屬性設置為本地機上一個名字為loginurl.aspx的網頁,當然我們也可以使用https://secured.sumnurv.com這樣的url,將protection屬性設置為建議的“all”,這意味著cookie不但會被加密,還會被確認有效。

確認算法來自machine.config中的machinekey元素,數據確認有助于確保cookie的數據在傳輸的過程中不會被篡改。

timeout屬性指的是一個cookie終止、用戶再次登錄之前的以分鐘計的時間。在credentials小節中,我們添加二個用戶以及它們的口令,formsauthentication將使用它們對用戶進行認證。

授權

在authorization小節中,我們希望沒有非授權的用戶能夠訪問應用。“?”表示匿名用戶,因此我們對所有的匿名用戶設置一個deny標志。

login.aspx概述

所有用戶的認證邏輯都在這里完成。如果想根據web.config、xml或文本文件、數據庫驗證用戶的證書,那么驗證工作就是在這里完成的。下面的例子根據web.config驗證用戶的證書。

login.aspx code

<%@page language="vb" %>
<%@import namespace="system.web.security" %>
<script language="vb" runat="server">
sub processlogin(objsender as object, objargs as eventargs)

if formsauthentication.authenticate(txtuser.text, txtpassword.text) then
formsauthentication.redirectfromloginpage(txtuser.text, chkpersistlogin.checked)
else
errormessage.innerhtml = "<b>something went wrong...</b> please
re-enter your credentials..."
end if
end sub
</script>
<html>
<head>
<title>standard forms authentication login form</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<form runat="server">
<table width="400" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="80">username : </td>
<td width="10"> </td>
<td><asp:textbox id="txtuser" width="150" runat="server"/></td>
</tr>
<tr>
<td>password : </td>
<td width="10"> </td>
<td><asp:textbox id="txtpassword" width="150" textmode="password"
runat="server"/></td>
</tr>
<tr>
<tr>
<td></td>
<td width="10"> </td>
<td><asp:checkbox id="chkpersistlogin" runat="server"
/>remember my credentials
</td>
</tr>
<tr>
<td> </td>
<td width="10"> </td>
<td><asp:button id="cmdlogin" onclick="processlogin"
text="login" runat="server" /></td>
</tr>
</table>


<div id="errormessage" runat="server" />
</form>
</body>
</html>



login.aspx的詳細解釋

由于還需要進行認證,因此在上面的代碼中引用了system.web.security名字空間,formsauthentication是system.web.security名字空間中的一個類。在本例中,我們使用了一個帶有分別用來輸入用戶名、口令的文本框、口令輸入字段,還有一個復選框,方便用戶使用一個永久性的cookie集。“submit”(提交)按鈕有一個onclick事件,它執行一個名為processlogin的子程序。在processlogin內部,我們執行了formsauthentication類的authenticate方法,用戶名和口令是其二個參數。這一方法根據用戶名和參數檢查web.config文件中信任狀的標記。如果它們相符,我們執行redirectfromloginpage方法,該方法會向用戶的機器中寫入一個cookie,對用戶的行為進行跟蹤,并確保用戶是經過認證的;如果不相符,就會發生錯誤,并通知用戶。

default.aspx概述

這是用戶請求或謀略訪問的頁。在本例中,我們將顯示被認證用戶和認證類型。

default.aspx code

<%@page language="vb" %>
<%@import namespace="system.web.security" %>
<script language="vb" runat="server">
sub signout(objsender as object, objargs as eventargs)
delete the users auth cookie and sign out
formsauthentication.signout()
redirect the user to their referring page
response.redirect(request.urlreferrer.tostring())
end sub
sub page_load()
verify authentication
if user.identity.isauthenticated then
display credential information
displaycredentials.innerhtml = "current user : <b>" & user.identity.name
& "</b>" & _
"authentication used : <b>" & user.identity.authenticationtype
& "</b>"
else
display error message
displaycredentials.innerhtml = "sorry, you have not been authenticated."
end if
end sub
</script>
<html>
<head>
<title>forms authentication</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<span class="header">forms based authentication using standard
method</span>

<div id="displaycredentials" runat="server" />


<form runat="server">
<asp:button id="cmdsignout" text="sign out" runat="server"
onclick="signout" />
</form>
</body>
</html>



由于需要其中的一些方法和屬性,在這里我再次使用了system.web.security名字空間。空間頁中包含一個簡單的div元素,還有一個input元素,它運行一個刪除用戶的cookie的子程序。在page_load事件中,我們使用user.identity.isauthenticated屬性檢查用戶是否已經得到了認證,返回的布爾型值表示用戶是否通過了認證。如果用戶通過了認證,我們希望返回用戶的名字和使用的認證方法。使用 user.identity.name屬性,我們就能夠得到用戶的名字,identity.authenticationtype返回使用的認證方法。我們還使用了一個signout過程,允許用戶離開網站,并刪除用戶計算機中的cookie,它甚至能夠刪除一些永久性的cookie。

結束語

通過這篇文章,希望廣大讀者能夠對表格認證以及如何使用它有一個基本的了解,體會到asp.net在安全方面對asp所作的改進。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 诏安县| 通许县| 庆阳市| 高陵县| 新邵县| 武功县| 孟津县| 红桥区| 江口县| 淮滨县| 车险| 青浦区| 白水县| 榕江县| 那曲县| 台南市| 宝坻区| 普定县| 东至县| 苏州市| 元氏县| 牟定县| 柳江县| 苏州市| 咸宁市| 苗栗市| 西丰县| 中山市| 高邑县| 区。| 岢岚县| 新沂市| 积石山| 清水河县| 凌源市| 罗定市| 科技| 邢台县| 新郑市| 临沧市| 任丘市|