?众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。
方法一:在WebService中引入SoapHeader
[c-sharp]
view plain
copy
print
?
- #region 配置登录标头
-
-
-
-
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
加入一个服务用于测试:
[c-sharp]
view plain
copy
print
?
- #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中:
[c-sharp]
view plain
copy
print
?
- 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方式验证
[c-sharp]
view plain
copy
print
?
- [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
调用该服务,
[c-sharp]
view plain
copy
print
?
- 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中声明判断即可~