WebService Header使用

在写WebService的时候如果不想让任何人都可以调用你的接口的话,可以给接口加一个验证,WebService Header就要发挥它的作用了

1.WebService代码如下:

/// <summary>
    /// GreenCitySSOService 的摘要说明
    /// </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 GreenCitySSOService : System.Web.Services.WebService
    {
        public AuthHeader header = new AuthHeader();
        [WebMethod]
        [SoapHeader("header")]
        ///传入用户信息获取Token
        public string GetToken(string UserID)
        {
            string validate = header.ValidateUser;
            if (validate == "ok")
            {
                return UserID+",表头验证成功";
            } 
            else if (validate == "NullError")
            {
                return UserID+",WebService头的用户名密码为空";
            }
            else if (validate == "UserError")
            {
                return UserID + ",WebService头的用户名密码不正确";
            }
            return UserID + ",表头验证失败";
        }
    }
    //webService Header验证
    public class AuthHeader : SoapHeader
    {
        //用户名
        public string User { get; set; }

        //密码
        public string Pwd { get; set; }

        //验证用户
        public string ValidateUser
        {
            get
            {
                string validate = "";
                string SysUser = ConfigurationManager.AppSettings["SSOWebServiceUser"].ToString();
                string SysPwd = ConfigurationManager.AppSettings["SSOWebServicePwd"].ToString();
                if (string.IsNullOrEmpty(User) || string.IsNullOrEmpty(Pwd))
                {
                    validate = "NullError";
                }
                else if (User == SysUser && Pwd == SysPwd)
                {
                    validate = "ok";
                }
                else {
                    validate = "UserError";
                }
                return validate;
            }
        }

    }

2.后台调用方法如下:

        public ActionResult Index()
        {
            //WebService 接口
            SSOTest.GreenCitySSOService service = new SSOTest.GreenCitySSOService();
            //接口里面的Header类,输入接口需要的用户名和密码
            AuthHeader header = new AuthHeader();
            header.User = "*****";
            header.Pwd = "*****";
            //将header类传给接口的AuthHeaderValue属性
            service.AuthHeaderValue = header;
            //接口调用
            string Ret=service.GetToken("licong");
            ViewBag.Ret = Ret;
            return View();
        }

 

posted @ 2017-03-14 15:09  微笑代表淡定.Net  阅读(2162)  评论(0)    收藏  举报