WebService的身份认证

有些WebService为了安全都需要进行身份验证,这里我们使用通过继承 SoapHeader 进行身份验证。
继承SoapHeader的类:

  public class CustomSoapHeader: SoapHeader
    {
        private string username = string.Empty;
        private string userpwd = string.Empty;
        public CustomSoapHeader() { }

        public CustomSoapHeader(string name, string pwd)
        {
            username = name;
            userpwd = pwd;
        }
        public string UserName
        {
            set { username = value; }
            get { return username; }
        }
        public string UserPwd
        {
            set { userpwd = value; }
            get { return userpwd; }
        }
        public bool Validata()
        {
            return UserName.Equals("admin") && UserPwd.Equals("123");
        }
    }

WebService服务代码:

public class WebServiceTest : System.Web.Services.WebService
    {
        public CustomSoapHeader customSoapHeader;

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        [SoapHeader("customSoapHeader")]
        public int Sum(int m,int n)
        {
            if (customSoapHeader != null && customSoapHeader.Validata())
            {
                return m + n;
            }
            else
            {
                throw new SoapException("身份认证不通过",SoapHeaderException.ServerFaultCode);
            }
        }

        [WebMethod]
        public List<User> GetUsers()
        {
            return new List<User>()
            {
                new User()
                {
                    Name="Tim",
                    Old=15
                },
                new User()
                {
                    Name="Mike",
                    Old=18
                }
            };
        }
    }

    public class User
    {
        public string Name { set; get; }
        public int Old { set; get; }
    }
}

需要注意的是== [SoapHeader(string memberName)]== memberName是子类的变量名称
客户端调用:

 private void Test()
        {
            CustomSoapHeader header = new CustomSoapHeader()
            {
                UserName = "admin",
                UserPwd = "123"
            };
            using (WebServiceTestSoapClient client = new WebServiceTestSoapClient())
            {
                int sum = client.Sum(header, 5, 6);
                var users = client.GetUsers();
            }
        }
发布了13 篇原创文章 · 获赞 2 · 访问量 494

猜你喜欢

转载自blog.csdn.net/qq_41809137/article/details/103216511