注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

Web Service 三种身份验证方式  

2011-05-28 13:08:35|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Web Service 验证方式<一>SoapHeader验证

服务端代码:

注意第7行,需要加[SoapHeader("authHeader")] 特性。



1 public class GetDataList : System.Web.Services.WebService
2 {
3 public AuthHeader authHeader;
4
5
6 [WebMethod]
7 [SoapHeader("authHeader")]
8 public string GetBookList()
9 {
10 string xmlStr = string.Empty;
11 try
12 {
13
14 if (authHeader == null)
15 {
16 XmlDocument xmlDoc = new XmlDocument();
17 XmlDeclaration xmlDec;
18 xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
19 XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
20 XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
21 xmlAtt.InnerText = "true";
22 XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
23 xmlChild.Attributes.Append(xmlAtt);
24 xmlChild.InnerText = "AuthHeader对象不存在";
25 xmlEle.AppendChild(xmlChild);
26 xmlDoc.AppendChild(xmlEle);
27
28 xmlStr = xmlDoc.InnerXml;
29
30 return xmlStr;
31 }
32 if (!authHeader.Verify())
33 {
34 XmlDocument xmlDoc = new XmlDocument();
35 XmlDeclaration xmlDec;
36 xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
37 XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
38 XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
39 xmlAtt.InnerText = "true";
40 XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
41 xmlChild.Attributes.Append(xmlAtt);
42 xmlChild.InnerText = "验证失败";
43 xmlEle.AppendChild(xmlChild);
44 xmlDoc.AppendChild(xmlEle);
45
46 xmlStr = xmlDoc.InnerXml;
47
48 return xmlStr;
49 }
50
51 DataSet ds = new DataSet();
52 DataTable tb = new DataTable("BookList");
53 DataColumn dc0 = new DataColumn("Code", Type.GetType("System.String"));
54 DataColumn dc1 = new DataColumn("BookName", Type.GetType("System.String"));
55 DataColumn dc2 = new DataColumn("BookPrice", Type.GetType("System.Single"));
56 DataColumn dc3 = new DataColumn("UpdateTime", Type.GetType("System.DateTime"));
57
58
59 tb.Columns.Add(dc0);
60 tb.Columns.Add(dc1);
61 tb.Columns.Add(dc2);
62 tb.Columns.Add(dc3);
63
64 DataRow dr = tb.NewRow();
65 dr[0] = "c0001";
66 dr[1] = "世界地理";
67 dr[2] = "9.98";
68 dr[3] = DateTime.Now;
69 tb.Rows.Add(dr);
70
71 dr = tb.NewRow();
72 dr[0] = "c0002";
73 dr[1] = "世界历史";
74 dr[2] = "9.95";
75 dr[3] = DateTime.Now;
76 tb.Rows.Add(dr);
77
78 ds.Tables.Add(tb);
79 xmlStr = ds.GetXml();
80 }
81 catch (Exception ex)
82 {
83 xmlStr= ex.ToString();
84 }
85
86 return xmlStr;
87 }
88 }
89 }

 

 


Web Service 三种身份验证方式 - IDesire - 樱之花 yinzhihua2008Web Service 三种身份验证方式 - IDesire - 樱之花 yinzhihua2008代码

public class AuthHeader:SoapHeader
{
public string UserCode
{
get;
set;
}
public string UserPwd
{
get;
set;
}
public bool Verify()
{
if (this.UserCode.Equals("yuli") && this.UserPwd.Equals("123456"))
return true;
else
return false;
}
}

 

 

客户端调用代码:

OA_WebService 添加web 引用时声明的命名空间。



1 protected void btnRun_Click(object sender, EventArgs e)
2 {
3 OA_WebService.GetDataList oaWebSerive = new OA_WebService.GetDataList();
4
5 OA_WebService.AuthHeader authHeader = new OA_WebService.AuthHeader();
6
7 authHeader.UserCode = "alpha";
8 authHeader.UserPwd = "123456";
9
10 oaWebSerive.AuthHeaderValue = authHeader;
11
12 string str = oaWebSerive.GetBookList();
13
14 Response.Write(str);
15 }

 


Web Service 验证方式<二>IIS验证(windows集成验证)  

需要设置IIS“不允许匿名”访问并且需要选择“集成windows验证”,该验证方式服务端方法只有声明为[WebMethod]方法,不需要其他验证代码。

客户端调用代码,注意第5行,需要实例化webservice代理类的Credentials属性。

 



1 protected void Button1_Click(object sender, EventArgs e)
2 {
3 //将web服务程序设为集成windows身份验证,需要将匿名访问关闭
4   OA_WebService.GetDataListByIIS webService = new OA_WebService.GetDataListByIIS();
5 webService.Credentials = new System.Net.NetworkCredential("alpha", "123456");
6 string str = webService.GetBookList();
7 Response.Write(str);
8 }


Web Service 验证方式<三>Session验证

服务端代码,需要设置[WebMethod(EnableSession=true)] 允许Session。



1 public class GetDataListBySeesion : System.Web.Services.WebService
2 {
3 [WebMethod(EnableSession=true)]
4 public bool Verify(string userName,string pwd)
5 {
6 if (userName.Equals("alpha") && pwd.Equals("123456"))
7 {
8 Session["LoginStatus"] = true;
9 }
10 else
11 {
12 Session["LoginStatus"] = false;
13 }
14
15 return (bool)Session["LoginStatus"];
16 }
17
18 [WebMethod(EnableSession=true)]
19 public string GetBookList()
20 {
21 string xmlStr = string.Empty;
22 try
23 {
24
25 if (Session["LoginStatus"] == null || Session["LoginStatus"].Equals(false))
26 {
27 XmlDocument xmlDoc = new XmlDocument();
28 XmlDeclaration xmlDec;
29 xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
30 XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
31 XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
32 xmlAtt.InnerText = "true";
33 XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
34 xmlChild.Attributes.Append(xmlAtt);
35 xmlChild.InnerText = "验证失败";
36 xmlEle.AppendChild(xmlChild);
37 xmlDoc.AppendChild(xmlEle);
38 xmlStr = xmlDoc.InnerXml;
39 return xmlStr;
40 }
41
42 DataSet ds = new DataSet();
43 DataTable tb = new DataTable("BookList");
44 DataColumn dc0 = new DataColumn("Code", Type.GetType("System.String"));
45 DataColumn dc1 = new DataColumn("BookName", Type.GetType("System.String"));
46 DataColumn dc2 = new DataColumn("BookPrice", Type.GetType("System.Single"));
47 DataColumn dc3 = new DataColumn("UpdateTime", Type.GetType("System.DateTime"));
48
49
50 tb.Columns.Add(dc0);
51 tb.Columns.Add(dc1);
52 tb.Columns.Add(dc2);
53 tb.Columns.Add(dc3);
54
55 DataRow dr = tb.NewRow();
56 dr[0] = "c0001";
57 dr[1] = "世界地理";
58 dr[2] = "9.98";
59 dr[3] = DateTime.Now;
60 tb.Rows.Add(dr);
61
62 dr = tb.NewRow();
63 dr[0] = "c0002";
64 dr[1] = "世界历史";
65 dr[2] = "9.95";
66 dr[3] = DateTime.Now;
67 tb.Rows.Add(dr);
68
69 ds.Tables.Add(tb);
70 xmlStr = ds.GetXml();
71 }
72 catch (Exception ex)
73 {
74 xmlStr = ex.ToString();
75 }
76
77 return xmlStr;
78 }
79 }

客户端代码 ,注意第5行,需要实例化代理类的CookieContainer属性。否则会验证失败。 



1 protected void btnGoto_Click(object sender, EventArgs e)
2 {
3 OA_WebService.GetDataListBySeesion book = new OA_WebService.GetDataListBySeesion();
4
5 book.CookieContainer = new System.Net.CookieContainer();
6
7 if (book.Verify("alpha", "123456"))
8 {
9 string str = book.GetBookList();
10
11 Response.Write(str);
12 }
13 }

 

  评论这张
 
阅读(692)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017