Web Service是政府,企业,个人提供的在线应用服务,其他公司、软件都能通过Internet来访问并使用服务。针对于有些公司某些数据只允许授权的企业或人使用,所以我们需要进行身份验证
第一种方式:在Web Service引入SoapHeader
1.如下图,我们实现一个用于实现身份验证的类MySoapHeader,定义两个成员变量(UserName和Password),定义函数ValideUser用来检测使用服务的程序的Soap标头的数据是否被授权使用服务
//实现一个用来验证身份的类 public class MySoapHeader:SoapHeader { public MySoapHeader() { // // TODO:在此添加构造函数 // } public string UserName;//用户名 public string Password;//密码 /// <summary> /// 判断用户名和密码是否正确 /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public bool ValideUser(string username, string password) { if ((username == "admin") && (password == "admin")) { return true; } else { return false; } } }
2.创建Verification.asmx。
public class Verification : System.Web.Services.WebService { public MySoapHeader header; //定义用户身份验证变量header [WebMethod(Description="用户验证测试")] [System.Web.Services.Protocols.SoapHeader("header")] //用户身份验证的Soap头 public string HelloWorld(string contents) { if (header.ValideUser(header.UserName, header.Password)) { return contents + "—执行了"; } else { return "你没有权限访问!"; } } }
3.创建一个客户端—WebForm的页面
public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { VerificationServer.Verification verTest = new VerificationServer.Verification();//添加web引用 VerificationServer.MySoapHeader header = new VerificationServer.MySoapHeader();//web引用创建soap头对象 //设置soap头部变量 header.UserName = "admin"; //用户名 header.Password = "admin"; //密码 verTest.MySoapHeaderValue = header; Response.Write(verTest.HelloWorld("我是老王")); } }