做了一段時間的webservice,跨平臺,標準化,等優點就不多說了,可是缺點也有很多。
特別是安全問題上,只要是知道webservice地址通過asp.net 的web服務就能訪問,而且方法都是顯性的,這樣覺的很不安全。
今天,我們來實現在WebService中加入安全驗證機制,這樣就有了一級的驗證了。
舉個例子:
建立一個webservice
public class WebService : System.Web.Services.WebService {
public KEY key=new KEY();
public WebService () {
//如果使用設計的組件,請取消註釋以下行
//InitializeComponent();
}
[WebMethod]
[SoapHeader("key")]
public string HelloWorld() {
if (key.IsValid())
return "Hello World";
else
return "";
}
}
建立一個操作類KEY,繼承SoapHeader
public class KEY : SoapHeader
{
public KEY()
{
//
//TODO: 在此處添加構造函數邏輯
//
}
//安全密鑰
public string Key { get; set; }
public bool IsValid()
{
return IsValid(Key);
}
public bool IsValid(string key)
{
try
{
string keyconfig = "123";
if (key == keyconfig)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}
}
調用:
WebService.WebService webs = new WebService.WebService();
WebService.KEY key = new WebService.KEY();
key.Key = "123";
webs.GNET_KEYValue = key;
show.InnerHtml = webs.HelloWorld();
如果key不對,返回空,否則返回helloworld。