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

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

方法一:在WebService中引入SoapHeader
[c-sharp] view plaincopyprint?

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 构造 用户名|密码  
/// <summary>  
/// 用户名  
/// </summary>  
public string UserName  
{  
    get { return strUserName; }  
    set { strUserName = value; }  
}  
/// <summary>  
/// 密码  
/// </summary>  
public string PassWord  
{  
    get { return strPassWord; }  
    set { strPassWord = value; }  
}  

#endregion  

#region 检测是否正确登录  
/// <summary>  
/// 检测是否正确登录  
/// </summary>  
/// <returns></returns>  
public bool CheckLogin()  
{  
    if (strUserName == "合法登录名" && strPassWord == "合法登录密码")  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  

#endregion  

}

endregion

加入一个服务用于测试:

[c-sharp] view plaincopyprint?

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 plaincopyprint?
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 plaincopyprint?
[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 plaincopyprint?
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中声明判断即可~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值