• webService访问加密-Soapheader


    (转)WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。 
    具体实现步骤: 
    1、 定义一个 soapheader派生类用来实现 WebService访问权限验证
    [csharp] view plaincopy
    1. <span style="font-size:10px;">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.   
    11. /// <summary>  
    12. ///MySoapHeader 的摘要说明  
    13. /// </summary>  
    14. public class MySoapHeader:System .Web .Services .Protocols .SoapHeader   
    15. {  
    16.     private string _uname = string.Empty;//webservice访问用户名  
    17.   
    18.     public string Uname  
    19.     {  
    20.         get { return _uname; }  
    21.         set { _uname = value; }  
    22.     }  
    23.     private string _password = string.Empty;//webservice访问密码  
    24.   
    25.     public string Password  
    26.     {  
    27.         get { return _password; }  
    28.         set { _password = value; }  
    29.     }  
    30.   
    31.   
    32.     public MySoapHeader()  
    33.     {  
    34.      //  
    35.      //TODO: 在此处添加构造函数逻辑  
    36.      //  
    37.     }  
    38.     public MySoapHeader(string uname, string upass)  
    39.     {  
    40.         init(uname, upass);  
    41.     }  
    42.     private void init(string uname, string upass)  
    43.     {  
    44.         this._password = upass;  
    45.         this._uname = uname;  
    46.     }  
    47.     //验证用户是否有权访问内部接口  
    48.     private bool isValid(string uname, string upass, out string msg)  
    49.     {  
    50.         msg = "";  
    51.         if (uname == "admin" && upass =="admin")  
    52.         {  
    53.             return true;  
    54.         }  
    55.         else {  
    56.             msg = "对不起!您无权调用此WebService!";  
    57.             return false;  
    58.         }  
    59.     }  
    60.     //验证用户是否有权访问外部接口  
    61.     public bool isValid(out string msg)  
    62.     {  
    63.         return isValid(_uname, _password,out msg);  
    64.     }  
    65. }  
    66.   
    67.   
    68. </span>  

    2、 定义有需要验证的 WebService。 

    [csharp] view plaincopy
    1. <span style="font-size:10px;">using System;  
    2. using System.Collections;  
    3. using System.Linq;  
    4. using System.Web;  
    5. using System.Web.Services;  
    6. using System.Web.Services.Protocols;  
    7. using System.Xml.Linq;  
    8.   
    9. /// <summary>  
    10. ///test 的摘要说明  
    11. /// </summary>  
    12. [WebService(Namespace = "http://tempuri.org/")]  
    13. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
    14. //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。   
    15. // [System.Web.Script.Services.ScriptService]  
    16. public class test : System.Web.Services.WebService {  
    17.   
    18.     public test () {  
    19.   
    20.         //如果使用设计的组件,请取消注释以下行   
    21.         //InitializeComponent();   
    22.     }  
    23.     public MySoapHeader myheader = new MySoapHeader();  
    24.     [WebMethod]  
    25.     public string HelloWorld() {//普通WebService,无需验证  
    26.         return "Hello World";  
    27.     }  
    28.     [SoapHeader("myheader")]//加入此头部的WebService需要验证,不加则为普通WebService无需验证  
    29.   
    30.     [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)]  
    31.   
    32.     public string GetProductPrice2(string ProductId)  
    33.     {  
    34.   
    35.         string msg = "";  
    36.   
    37.         //验证是否有权访问  
    38.   
    39.         if (!myheader.isValid(out  msg))  
    40.         {  
    41.   
    42.             return -1;//返回错误信息  
    43.   
    44.         }  
    45.   
    46.         return ProductId;  
    47.     }  
    48.  }            
    49.    </span>  

    3、 客户端调用方法 
    引用 WebService定义 WebService名称为 :Myservice

    [csharp] view plaincopy
    1. <span style="font-size:10px;">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.         myservice.test te = new abc.test();  
    15.         myservice.MySoapHeader myhead = new MySoapHeader();  
    16.         myhead.Uname = "admin";//输入WebService访问用户名  
    17.         myhead.Password = "admin";//输入WebService访问密码  
    18.         te.MySoapHeaderValue = myhead;//  
    19.         string test = te.GetProductPrice2("ok!");  
    20.       Response.Write(aa);//用户名、密码输入正确则输出ok 否则输出 错误msg  
    21.     }  
  • 相关阅读:
    未格式化的输入/输出操作
    格式化输入与输出
    随机数
    正则表达式
    bitset
    tuple
    servlet笔记
    springside
    maven
    Lua简易入门教程
  • 原文地址:https://www.cnblogs.com/aresyl/p/3837938.html
Copyright © 2020-2023  润新知