使用SoapHeader实现对WebService的访问验证
大家都知道通过定义WebService可以实现远程的访问应用。但是,在实际应用中WebService如果被未授权的用户使用极有可能对系统带来破坏,所以采用保护措施是很有必要的。
通常的做法是使用SoapHeader来对访问用户进行身份验证:
一、WebService端定义一个SoapHeader的子类
Public Class MyHeader
Inherits SoapHeader
Public Username As String
Public Password As String
End Class
同时定义相应的变量
Public mh As MyHeader
然后在方法中加入类似下面的代码
<WebMethod(), SoapHeader("mh")> _
Public Function HelloWorld() As String
Dim sTemp As String = "err"
If chkUser() = True Then
sTemp = mh.Username
End If
Return sTemp
End Function
'验证用户
Private Function chkUser() As Boolean
If mh.Username = "小山哥" and mh.Password="123456" Then
Return True
Else
Return False
End If
End Function
二、客户端
引用的WebService名字是mingday
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ch As New mingday.MyHeader
ch.Username = txt.Text.Trim '用户身份
ch.Password = txt.Text.Trim
Dim a As New mingday.t1
a.MyHeaderValue = ch
MsgBox(a.HelloWorld) '成功返回用户名,失败返回错误
End Sub
另外需要说明的是,对于密码部分,最好还是加密一下(比如使用徐徐的加密类),这样效果会好一点。