1. 程式人生 > >js呼叫webservice:通過通過SOAP Header身份驗證

js呼叫webservice:通過通過SOAP Header身份驗證

通過通過SOAP Header身份驗證

1.我們實現一個用於身份驗證的類,檔名MySoapHeader.cs

MySoapHeader 類繼承自System.Web.Services.Protocols.SoapHeader。且定義了兩個成員變數,UserName和 PassWord,還定義了一個使用者認證的函式ValideUser。它提供了對UserName和PassWord檢查的功能

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.Services;
  11. using System.Web.Services.Protocols;
  12. /// <summary>
  13. ///MySoapHeader 的摘要說明
  14. /// </summary>
  15. public class MySoapHeader:SoapHeader
  16. {
  17.     public MySoapHeader()
  18.     {
  19.         //
  20.         //TODO: 在此處新增建構函式邏輯
  21.         //
  22.     }
  23.     public string UserName;
  24.     public string PassWord;
  25.     public bool ValideUser(string in_UserName, string in_PassWord) 
  26.     {
  27.         if ((in_UserName == "zxq") && (in_PassWord == "123456"))
  28.         {
  29.             return true;
  30.         }
  31.         else
  32.         {
  33.             return false;
  34.         }
  35.     }
  36. }
複製程式碼

2.下面我們建立WebService.asmx    WebService.cs程式碼如下:

  1. using System;
  2. using System.Collections;
  3. using System.Web;
  4. using System.Web.Services;
  5. using System.Web.Services.Protocols;
  6. /// <summary>
  7. ///WebService 的摘要說明
  8. /// </summary>
  9. [WebService(Namespace = "http://tempuri.org/")]
  10. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  11. public class WebService : System.Web.Services.WebService
  12. {
  13.     public WebService()
  14.     {
  15.         //如果使用設計的元件 ,請取消註釋以下行
  16.         //InitializeComponent();
  17.     }
  18.     public MySoapHeader header; ////定義使用者身份驗證類變數header
  19.     [WebMethod(Description = "使用者驗證測試 ")]
  20.     [System.Web.Services.Protocols.SoapHeader("header")]//使用者身份驗證的soap頭
  21.     public string HelloWorld(string contents)
  22.     {
  23.         //驗證是否有權訪問
  24.         if (header.ValideUser(header.UserName, header.PassWord))
  25.         {
  26.             return contents + "執行了";
  27.         }
  28.         else
  29.         {
  30.             return "您沒有許可權訪問";
  31.         }
  32.     }
  33. }
複製程式碼

3.客戶端 建立個Default.aspx

Default.aspx .cs程式碼

  1. using System;
  2. using System.Configuration;
  3. using System.Data;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. public partial class _Default : System.Web.UI.Page
  11. {
  12.     protected void Page_Load(object sender, EventArgs e)
  13.     {
  14.         com.cn1yw.WebService test = new com.cn1yw.WebService();//web引用(改成您自己的)
  15.         com.cn1yw.MySoapHeader Header = new com.cn1yw.MySoapHeader();//web引用建立soap頭物件(改成您自己的)
  16.         //設定soap頭變數
  17.         Header.UserName = "zxq";
  18.         Header.PassWord = "123456";
  19.         test.MySoapHeaderValue = Header;
  20.         //呼叫web 方法
  21.         Response.Write(test.HelloWorld("我是強"));
  22.     }
  23. }
複製程式碼