在调用Web Serivices时,往往需要身份验证,使得通过验证的用户才能调用你Web Serivices中的方法.当然你可以通过将参数添加到每个需要自定义身份验证方案的Web services方法中去,这需要花费很大的精力.
本文参看了IssueVision
使用了非常常用而且有效便捷的方法-----使用SoapHeader来实现自定义身份验证数据的传递.
主要步骤:
using System.Text;
using System.Web.Services.Protocols;
namespace Model
{
public class MySoapHeader: SoapHeader
{
public string UserName
{ get;
set;
}
public string PassWord
{
get;
set;
}
}
}
2:在自己的WEBSERVICES中写入该类:
如:
[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 WebService1 : System.Web.Services.WebService
{
public Model.MySoapHeader MyHeader;
}
在服务器端APP.CONfig中配置
如下:
<add key ="UserName" value="123"/>
<add key="PassWord" value ="123"/>
public static void VerifySoapHeader(Model.MySoapHeader MyHeader)
{
string name = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
string pass = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();
if (MyHeader != null && MyHeader.PassWord != null && MyHeader.UserName != null)
{
if (name == MyHeader.UserName && pass == MyHeader.PassWord)
{
}
else
{
throw new Exception("验证信息错误");
}
}
else
{
throw new Exception("验证信息错误");
}
}
[WebMethod]
[SoapHeader("MyHeader")] //用于验证soap头
public DataTable Select()
{
SoapHeaderVerify.VerifySoapHeader(this.MyHeader); //验证
return BLL.BTest.Select();
}
a在app.config中
添加:
<appSettings>
<add key="UserName" value="123"/>
<add key="PassWord" value="123" />
</appSettings>
其次:在窗口中添加
localhost.WebService1SoapClient client;
localhost.MySoapHeader MyHeader;
client = new localhost.WebService1SoapClient();
MyHeader = new localhost.MySoapHeader();
MyHeader.UserName = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
MyHeader.PassWord = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();
然后在调用WEBSERVICES的方法的时候把soap头加上就行了:
如:
client.Select(MyHeader);
其它的参考资料:
http://www.cnblogs.com/chhuic/archive/2009/09/28/1576050.html
http://space.itpub.net/?uid-12639172-action-viewspace-itemid-157121
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。