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();
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值