调用WebService时加入身份验证,以拒绝未授权的访问

      众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。

 

方法一:在WebService中引入SoapHeader

#region 配置登录标头 ///

/// Code CreateBy BanLao /// public class MySoapHeader : SoapHeader { private string strUserName = string.Empty; private string strPassWord = string.Empty; public MySoapHeader() { } public MySoapHeader(string username, string password) { this.strUserName = username; this.strPassWord = password; } #region 构造 用户名|密码 /// /// 用户名 /// public string UserName { get { return strUserName; } set { strUserName = value; } } /// /// 密码 /// public string PassWord { get { return strPassWord; } set { strPassWord = value; } } #endregion #region 检测是否正确登录 /// /// 检测是否正确登录 /// /// public bool CheckLogin() { if (strUserName == "合法登录名" && strPassWord == "合法登录密码") { return true; } else { return false; } } #endregion } #endregion

 

加入一个服务用于测试:

 

#region 测试连接 [System.Web.Services.Protocols.SoapHeader("myHeader")] [WebMethod(Description = "判断用户是否开通", EnableSession = true)] public string _GetValue(string strInputValue) { if (myHeader.CheckLogin()) { string strReturnValue = strInputValue + "@CopyRight By BanLao 2010"; return strReturnValue; } else { return "无效的身份验证,请重试!"; } } #endregion

 

至此我们想要的需要通过身份验证的服务配置好了,下面让我们进行一些测试,新建一个webForm在Page_Load中:

  

WebLogon.MySoapHeader myHeader = new WebLogon.MySoapHeader(); myHeader.UserName = "约定的合法用户"; myHeader.PassWord = "约定的合法密码"; WebLogon.Service This_Service = new WebLogon.Service(); This_Service.MySoapHeaderValue = myHeader; Response.Write(This_Service._GetValue("This is BanLao's Test Application For SoapHeader. "));

 

当运行这个WebForm时,如果用户名和密码是正确的我们将看到:

 

This is BanLao's Test Application For SoapHeader. @CopyRight By BanLao 2010

 

否则

 

无效的身份验证,请重试!

 

 

方法二:Web Service以Session方式验证

  [WebMethod(Description = "检测是否正确登录", EnableSession = true)] public bool CheckLogin(string strUserName, string strPassword) { if (strUserName.Equals("admin") && strPassword.Equals("123456")) { Session["LoginState"] = true; } else { Session["LoginState"] = false; } return (bool)Session["LoginState"]; } #region 测试连接 [WebMethod(Description = "测试连接", EnableSession = true)] public string _GetValue(string strInputValue) { if (Session["LoginState"] == null || Session["LoginState"].Equals(false)) { return "无效的身份验证,请重试!"; } else { string strReturnValue = strInputValue + "@CopyRight By BanLao 2010"; return strReturnValue; } } #endregion

 

调用该服务,

 

WebLogon.Service This_Service = new WebLogon.Service(); This_Service.CookieContainer = new System.Net.CookieContainer(); if (This_Service.CheckLogin("admin", "123456")) { Response.Write(This_Service._GetValue("This is BanLao's Test Application For Session. ")); }

 

当运行这个WebForm时,如果用户名和密码是正确的我们将看到:

 

This is BanLao's Test Application For Session. @CopyRight By BanLao 2010

 

否则

 

无效的身份验证,请重试!

 

 

注:如果需要多个合法用户,可以在WebService中声明判断即可~

你可能感兴趣的:(WebService)