試用Login控制項:
1.開啟新網站,佈置一個工具箱『登入』類別下的Login控制項(可選擇一種預設樣式)。

2.雙擊上圖中的登入鈕輸入如下程式碼:
If Login1.UserName = "123" And Login1.Password = "456" Then
e.Authenticated = True
End If
上述程式的意義是如果登入的使用者名稱是123而且密碼是456就是登入成功(e.Authenticated = True)!
3.啟動偵錯執行網站,試試看輸入成功的話沒事,失敗會出現失敗的訊息!

4.在網站內加入一個新的WebForm,預設名稱應該是Default2.aspx。在網頁上寫一句歡迎詞。
5.在上述登入成功的程式碼後加上一行程式 Server.Transfer("Default2.aspx"),再登入一次成功時會轉到新網頁。
6.同樣可以轉移到目標網頁的方式是:設定Login控制項的"DestinationPageUrl"屬性=目標網頁
7.當然(複習一下)使用 Response.Redirect("目標網頁") 也可以轉移到任何網址。
關閉後門的設計:
上述的方式設計登入機制有漏洞,如果使用者直接輸入Default2.aspx 的網址,就可以不必登入就直接使用網頁!要關閉這個後門漏洞,我們必須在開啟Default2.aspx時知道使用者是不是已經成功登入?方法是必須在登入成功時建立一個Session變數,譬如
Session("pass")=True;當開啟新網頁前檢查這個變數,如果不是True就不開網頁。
具體操作如下:
1.在登入成功的程式碼後面加上一行:Session("pass") = True

2.在Default2.aspx的Page_Load事件中寫以下的程式:
If Session("Login") <> True Then
Response.Write("未授權您使用這個網頁!")
Response.End()
End If
意思是如果變數不是 True (這個使用者未經過正確登入),在網頁上寫句話(Response.Write),然後停止網頁載入(Response.End)。結果是網頁會出現未授權的警告,其餘完全空白!我們成功堵住後門了!
注意到Session(工作階段)變數只針對同一個使用者有效,其他登入者即使在同一時間也不受此影響。
帳號密碼資料庫:
如果使用者很多,上面的方法就不適合了!因為每一個使用者都必須寫好多行程式,系統中每新增一個使用者都要改程式也未免太遜了!因此多使用者系統應該先建立資料庫。
1.開啟Access建立一個新資料庫,製作一張資料表,有識別碼、帳號與密碼三個欄位,任意輸入幾筆資料。

2.將上述資料庫放到網站的App_Data目錄內,重新整理方案總管。
3.佈置一個AccessDataSource,設定連結上表;佈置一個GridView顯示上表內容。

4.將登入程式改成這樣

其中關鍵名辭解釋如下:
Rows→代表GridView中的橫列;Cells→代表GridView表中的格位
GridView1.Rows(0).Cells(0).Text 代表GridView1 表格的第一行左邊第一格的內容,目前的例子是識別碼欄位的"1"
同理可證GridView1.Rows(1).Cells(1).Text="李四"
所以上述程式碼的意義是:逐列的取出帳號密碼和輸入的 Login1.UserName 以及
PassWord 比較,兩者都相符時即登入成功,程式轉到Default.aspx網頁。如果整個表找完、對完都無法找到符合資料,會出現登入失敗的訊息。
5.最後將 GridView 的 Visible
屬性設為False登入網頁就算成功了!否則使用者看著資料表輸入,就不用管制了!
|