C# WebService身份验证

来源:互联网 发布:淘宝外包美工多少钱 编辑:程序博客网 时间:2024/04/29 04:30

可以在每个服务调用前或初始化时进行身份验证

1.定义有身份验证信息的类,这个类继承System.Web.Services.Protocols.SoapHeader,而且定义两个成员变量,一个为UserName,一个为PassWord,如下:

public class MySoapHeader : SoapHeader    {        public string UserName { get; set; }        public string PassWord { get; set; }    }

2.在具体调用的WebService方法中加入验证方法,具体如下:

/// <summary>    /// MyServices 的摘要说明    /// </summary>    [WebService(Namespace = "http://tempuri.org/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。     // [System.Web.Script.Services.ScriptService]    public class MyServices : System.Web.Services.WebService    {        public  MySoapHeader header;        [WebMethod(Description = "用于用户验证测试")]        [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头        public string MyServicesTest(string str)        {            string userName = header.UserName;            string passWord = header.PassWord;            if (userName == "admin" && passWord == "admin")            {                return str;            }            return "NG:用户未登录,请先登录后使用!";        }    }


3.在客户端添加服务引用,调用方法如下:

MyServices.MyServices myServices = new MyServices.MyServices();MyServices.MySoapHeader myHeader = new MyServices.MySoapHeader();myHeader.UserName = "admin";myHeader.PassWord = "admin";myServices.MySoapHeaderValue = myHeader;MessageBox.Show( myServices.MyServicesTest("test"));


扩展阅读:http://blog.csdn.net/abandonship/article/details/5824328

0 0
原创粉丝点击