seo建站的步骤,专门找事做的网站,站点与网站有什么区别,国外专名做路演的网站WebService基于SoapHeader实现安全认证 本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用#xff0c;如果是WebService建议使用WSE3.0来保护Web服务#xff0c;如果使用的是Viaual Studio 2008可以使用WCF#xff0c;WCF里面提供了更多的服务认证方法。以下提… WebService基于SoapHeader实现安全认证 本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用如果是WebService建议使用WSE3.0来保护Web服务如果使用的是Viaual Studio 2008可以使用WCFWCF里面提供了更多的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。 1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader。 using System; using System.Collections.Generic; using System.Web; /// summary ///自定义的SoapHeader /// /summary public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string userName string.Empty; private string passWord string.Empty; /// summary /// 构造函数 /// /summary public MySoapHeader() { } /// summary /// 构造函数 /// /summary /// param nameuserName用户名/param /// param namepassWord密码/param public MySoapHeader(string userName, string passWord) { this.userName userName; this.passWord passWord; } /// summary /// 获取或设置用户用户名 /// /summary public string UserName { get { return userName; } set { userName value; } } /// summary /// 获取或设置用户密码 /// /summary public string PassWord { get { return passWord; } set { passWord value; } } } 2.添加WebService,并编写相应代码。 using System; using System.Collections.Generic; using System.Web; using System.Web.Services; /// summary ///WebService 的摘要说明 /// /summary [WebService(Namespace http://tempuri.org/)] [WebServiceBinding(ConformsTo WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { //声明Soap头实例 public MySoapHeader myHeader new MySoapHeader(); [System.Web.Services.Protocols.SoapHeader(myHeader)] [WebMethod] public string HelloWord() { //可以通过存储在数据库中的用户与密码来验证 if (myHeader.UserName.Equals(houlei) myHeader.PassWord.Equals(houlei)) { return 调用服务成功; } else { return 对不起您没有权限调用此服务; } } } 3.客户端调用分别使用不设置SoapHeader与设置SoapHeader。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace App { class Program { static void Main(string[] args) { localhost.WebService service new localhost.WebService(); //没有设置SoapHeader的服务调用 Console.WriteLine(没有设置SoapHeader: service.HelloWord()); Console.WriteLine(); //将用户名与密码存入SoapHeader; localhost.MySoapHeader header new localhost.MySoapHeader(); header.UserName houlei; header.PassWord houlei; service.MySoapHeaderValue header; //设置SoapHeader的服务调用 Console.WriteLine(设置SoapHeader: service.HelloWord()); Console.Read(); } } } 4.运行应用程序查看运行结果。 再看一下直接通过浏览器的调用结果。 点击HelloWord调用Web服务结果如下 点击“调用”按钮得到从服务器返回调用结果。 添加自定义SoapHeader可以成功调用WebService,否则不能调用WebService从而实现对Web Service的非法调用。这种方法存在一定的弊端就是在每一个WebService方法上都要进行一下验证如果用户名与密码存储在数据库中每调用一次WebService都要访问一次数据库进行用户名与密码的验证对于频繁调用WebService来说数据库压力很大。然而少量WebService调用这种方式还是一种不错的选择。 原文地址http://hi.baidu.com/guafuli/blog/item/e4f017cc779c7527f9dc6122.html 转载于:https://www.cnblogs.com/bdstjk/archive/2011/11/24/2519877.html