自定义SOAP标题可以限制调用服务的用户范围
1using System; 2using System.Web; 3using System.Web.Services; 4using System.Web.Services.Protocols; 5 6[WebService(Namespace = "http://livebaby.cn")] 7[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 8public class Service : System.Web.Services.WebService 9{ 10 public SecurityHeader currentUser; 11 public Service() 12 { 13 14 //如果使用设计的组件,请取消注释以下行 15 //InitializeComponent(); 16 } 17 [WebMethod, SoapHeader("currentUser")] 18 public string GetResult(string queryString) 19 { 20 if(ValidateUser(currentUser.UserName,currentUser.UserPass)) 21 { 22 return "你发送的字符串是:"+queryString; 23 } 24 else 25 return "对不起:" + currentUser.UserName+",您不是合法的用户!"; 26 } 27 //检验SOAP HEADER 28 private bool ValidateUser(string user, string pass) 29 { 30 if (user.Equals("user") && pass.Equals("user")) 31 return true; 32 else 33 return false; 34 } 35} 36//自定义Soap Header Class 37public class SecurityHeader : System.Web.Services.Protocols.SoapHeader 38{ 39 public string UserName; 40 public string UserPass; 41} |
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Text; 7using System.Windows.Forms; 8 9namespace SoapHeader 10{ 11 public partial class Form1 : Form 12 { 13 public Form1() 14 { 15 InitializeComponent(); 16 } 17 18 private void button_Invoke_Click(object sender, EventArgs e) 19 { 20 SoapHeader.localhost.SecurityHeader header = new SoapHeader.localhost.SecurityHeader(); 21 header.UserName = textBox_User.Text; 22 header.UserPass = textBox_Pass.Text; 23 SoapHeader.localhost.Service service = new SoapHeader.localhost.Service(); 24 service.SecurityHeaderValue = header; 25 this.textBox_Output.Text+=service.GetResult(this.textBox_Input.Text)+Environment.NewLine; 26 } 27 } 28} 29 |