http://blog.csdn.net/largestone_187/article/details/5734632

通过SoapHeader对用户口令进行验证,只有授权的用户才可以使用接口。确保了访问接口用户的安全性。

 

public MySoapHeader myHeader = new MySoapHeader();

    public SoapHeaderService()
{ //Uncomment the following line if using designed components
//InitializeComponent();
}
//普通方法,不需要SoapHeader验证
[WebMethod(Description = "普通方法不需要验证")]
public string HelloWorld(string msg) {
if (msg == "")
msg = "default message:" + "Hello World";
else
msg = "The message you have input is " + msg;
return msg;
}
//需要SoapHeader验证
[SoapHeader("myHeader")]
[WebMethod(Description="需要SoapHeader验证 ", EnableSession = true)]
public string GetSecurityService(string inmsg)
{
string msg = "";
//验证是否有权访问
if (!myHeader.IsValid(out msg))
{
return msg;//返回错误信息
}
inmsg = "Security Message: " + inmsg;
return inmsg;
} SoapHeader验证,本文未连接数据库,仅仅将验证写死了,需要的可以自己改。 public class MySoapHeader:System.Web.Services.Protocols.SoapHeader
{
private string _UserID = string.Empty;
private string _PassWord = string.Empty; public MySoapHeader()
{
//
// TODO: Add constructor logic here
//
}
//<param name="nUserID">用户ID</param>
//<param name="nPassWord">加密后的密码</param>
public MySoapHeader(string nUserID, string nPassWord)
{
Initial(nUserID, nPassWord);
}
#region 属性
//<summary> //用户名 //</summary>
public string UserID
{
get { return _UserID; }
set { _UserID = value; }
}
//<summary>
//加密后的密码
//</summary>
public string PassWord
{
get { return _PassWord; }
set { _PassWord = value; }
}
#endregion
#region 方法
//<summary>
//初始化
//</summary>
//<param name="nUserID">用户ID</param>
//<param name="nPassWord">加密后的密码</param>
private void Initial(string nUserID, string nPassWord)
{
UserID = nUserID;
PassWord = nPassWord;
}
//<summary>
//验证用户名密码是否正确
//</summary>
//<param name="nUserID">用户ID</param>
//<param name="nPassWord">加密后的密码</param>
//<param name="nMsg">返回的错误信息</param>
//<returns>用户名密码是否正确</returns>
private bool IsValid(string nUserID, string nPassWord, out string nMsg)
{
nMsg = "";
try
{
//判断用户名密码是否正确
if (nUserID == "admin" && nPassWord == "admin")
{
return true;
}
else
{
nMsg = "对不起,你无权调用此Web服务。";
return false;
}
} catch
{
nMsg = "对不起,你无权调用此Web服务。";
return false; }
}
//<summary>
//验证用户名密码是否正确
//</summary> //<returns>用户名密码是否正确</returns>
public bool IsValid(out string nMsg)
{
return IsValid(_UserID, _PassWord, out nMsg);
}
#endregion }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

SoapHeaderWS.SoapHeaderService shService = new SoapHeaderWS.SoapHeaderService();
SoapHeaderWS.MySoapHeader header = new SoapHeaderWS.MySoapHeader();
header.UserID = "admin";
header.PassWord = "admin";
shService.MySoapHeaderValue = header;
string outmsg = shService.GetSecurityService("测试安全控制Web Service成功!");
Label1.Text = outmsg;

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

最新文章

  1. hibernate映射文件
  2. .NET基础架构方法—DataTableToExcel通用方法
  3. 解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。
  4. Ubuntu 安装JDK并配置成为默认的JDK
  5. JAVA 界面 - 记事本
  6. jmeter的分布式部署
  7. spring开发相关网址
  8. 常用meta整理【转载】
  9. 淘宝数据库连接池 druid 性能评测
  10. 【dp】 比较经典的dp poj 1160
  11. oracle 处理时间和金额大小写的相关函数集合
  12. js--Dom Bom操作
  13. WMI测试器
  14. PyQt5目录
  15. 2015年上海现场赛重现 (A几何, K暴力搜索)
  16. Ansible Callback
  17. [同事转帖] .net core的服务器模式和工作站模式
  18. Python数据分析学习目录
  19. es的timeout机制
  20. GridView(网格视图)+MotionEvent(触控事件)实现可以拖动排序的网格图

热门文章

  1. Spring Session使用及源码解析
  2. Linux中实现一个简单的进度条【转】
  3. Linux core dump file详解
  4. 【bzoj4272】筐子放球
  5. 【洛谷】xht模拟赛 题解
  6. python几个重要的函数(lambda,filter,reduce,map,zip)
  7. CSS3颜色渐变模式总结
  8. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
  9. k8s的存储Volume
  10. python编码问题 与 代码换行问题