做了一段时间的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();
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。