WebService authentication

Some WebService for safety need to be authenticated, here we use through inheritance SoapHeaderAuthentication.
SoapHeader inherited classes:

  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 service code:

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; }
    }
}

Note that == [SoapHeader (string memberName)] == memberName variable name is a subclass of
client calls:

 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();
            }
        }
Published 13 original articles · won praise 2 · Views 494

Guess you like

Origin blog.csdn.net/qq_41809137/article/details/103216511