這是備份,原文請看:Web Service入門 #6,統一管理帳號、密碼的登入

http://www.dotblogs.com.tw/mis2000lab/archive/2009/01/14/webservice_6_sso.aspx

 

 

 

之前有一系列的 Web Service入門文章,沒看過的讀者請參閱:http://www.dotblogs.com.tw/mis2000lab/Tags/Web%20Service/default.aspx

之前也有提過「會員登入、帳號密碼的檢查」功能,請看 :http://www.dotblogs.com.tw/mis2000lab/Tags/%E6%9C%83%E5%93%A1%E7%AE%A1%E7%90%86/default.aspx

===================================================================

如果要把上面兩個功能合併起來的話,就是一個簡單的有點類似於Single Sign-On的功能了

(但,本範例 "不是" 真正的Single Sign-On)。

註解: 關於「真正的」Single Sign-On,可以看看 Topcat這篇文章 -- http://blog.blueshop.com.tw/topcat/archive/2008/04/03/54681.aspx

 

假設某企業有幾個網站(網頁程式)與系統(Windows程式),不想各自管理自己的員工帳號。

可以透過Web Service的方式,向同一台主機來作查詢。請看下圖。

 

首先,先寫好 Web Service(一個 .asmx檔案,之前的文章有講過了)來作帳號與密碼的檢查。

 

 

 

 

13 <WebMethod()> _
14   Public Function User_Login() Function User_Login(ByVal Login_Name As String, ByVal Login_passwd As String) As String
15 
16         '---- 1. 為了避免SQL Injection攻擊,發現可疑字將會立刻阻擋!---------------
17                 '......Sorry....省  略......
18 
19         '---- 2. 檢查帳號與密碼 --------------------------------------------------------------------------
20         '----     驗證成功,傳回OK。    失敗傳回EOF。
21         Dim return_str As String = "EOF"
22 
23         If (通過了第一部份,SQL Injection的檢驗) Then
24             Dim Conn As SqlConnection = New SqlConnection
27             Conn.ConnectionString = "資料庫的連結字串"
28             Conn.Open()   '-- 連結DB
29 
30             Dim cmd As SqlCommand = New SqlCommand("select count(id) from 會員資料庫 where 帳號 = '" & Login_Name & "' and 密碼 = '" & Login_passwd & "'", Conn)
31             Dim j As Integer = cmd.ExecuteScalar()
32 
33             If j <> 0 Then    '--找到資料
34                 return_str = "OK" 
35             End If
36             cmd.Cancel()
37             Conn.Close()
38             Conn.Dispose()
39         End If
40 
41         Return return_str
42   End Function

 

接下來,要撰寫一個 ASP.NET程式了。範例User_Login.aspx畫面設計如下,超簡單的。

 

然後,把事先寫好的Web Service「加入Web參考」。這些步驟,之前的文章都講過了。

 

範例User_Login.aspx 後置程式碼如下:

1     Protected Sub Button1_login_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1_login.Click
2         Dim ws As New localhost.Service_7_Login
3
4         If ws.User_Login(TextBox1.Text, TextBox2.Text) = "OK" Then
5             Label1.Text = "<font color=blue>通過!</font>"
6         Else
7             Label1.Text = "<font color=red>帳號、密碼錯誤!</font>"
8         End If
9     End Sub

 

完成了,很簡單。

要說缺點的話,Web Service的反應時間稍微慢了一點,這是當然。

如果那台會員資料庫掛點,那全公司的會員登入都無法運作了(不過,備份與維運這方面,[應該]不是程式設計師負責的,這該是MIS人員管的)

 

但好處就很多,例如:大家不用各自撰寫「自己的會員登入程式(各自寫的話,品質良莠不齊)」去檢查帳號、密碼。

如同上面的程式,直接引用別人的Web Service來用就好了。

 

 

目前正在整理「範例集」這本書的範例,也順便寫稿子。

臨時多加入的一個小範例。關於之前在BLOG發表過的 Web Service相關文章,都收錄進去了。

寫得比較詳細,圖文並茂的話,一章就寫了快五十頁。

 

......  寄信給我    mis2000lab (at) 雅虎.com.台灣 ................................................................................................................
ASP.NET專題實務ASP.NET專題實務(文魁出版 / P8187)

.............................................................................................................. 寄信給我    mis2000lab (at) 雅虎.com.台灣 ........

創作者介紹

MIS2000 Lab -- ASP.NET專題實務 / 線上教學文件

MIS2000 Lab 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Maxi
  • 兩個問題

    1. 驗證後的網站如何管理其帳號及權限?
    2. 用明碼傳送password給web service不怕被截取嗎?
  • 您好:
    很抱歉這麼晚回應,因為這裡不是我主要的網站,只是文章備份而已。以下才是我主要的網站。
    http://www.dotblogs.com.tw/mis2000lab/

    1). 您以前是怎麼管理帳號與權限,現在還是照用。因為這方法不光是可以回傳 Y/N而已,您稍做變化,一樣可以做很多事。例如傳回照明使用者的權限、等級、職稱等等。

    2). 我沒有辦法在一個短範例裡面,包山包海地介紹全部的功能,實在很抱歉。我的希望是「針對初學者,針對這個主題,提供一個簡單明瞭的範例」。只針對本文重點作解說。

    在我的書本裡面,ASP.NET專題實務 II --範例集與 4.0新功能,有針對XSS、SQL Injection的防範做了補強說明與範例。未能在這個範例裡面提出,實在不好意思。

    MIS2000 Lab 於 2010/09/06 09:33 回覆

找更多相關文章與討論
【 X 關閉 】

【痞客邦】大學生網路社群使用習慣調查

親愛的讀者,痞客邦希望能了解大學生的網路社群使用習慣,
填問卷即可抽獨家好禮喔!
(注意:關閉此視窗將不再出現)