我们一起学习WCF 第三篇头消息验证用户身份
2018-06-18 02:43:55来源:未知 阅读 ()
前言:今天我主要写的是关于头消息的一个用处验证用户信息
下面我画一个图,可以先看图
第一步:我们先开始做用户请求代码
首先:创建一个可执行的上下文对象块并定义内部传输的通道
using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel))
然后:创建头消息 要发送的SOAP传输的内容
MessageHeader myHeaderUid = MessageHeader.CreateHeader(
"header", "uid", UId);
header:标头 XML 元素的本地名称(名字可以任意取,但是必须和服务器端保持一致)
uid:标头 XML 元素的命名空间 URI(名字可以任意取,但是必须和服务器端保持一致)
UId:要传送的信息(是一个object类型的值)
最后:把创建要传输的头内容添加到传输的对象中
OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderUid);
ok这样就完成客户端的编码
1 ValidUserClient userClient =new ValidUserClient(); 2 while (true) 3 { 4 Console.Write("用户名:"); 5 string UId = Console.ReadLine(); 6 Console.Write("密码:"); 7 string Pwd = Console.ReadLine(); 8 using (OperationContextScope scope = new OperationContextScope(userClient.InnerChannel))//创建一个可执行的上下文对象块并定义内部传输的通道 9 { 10 MessageHeader myHeaderUid = MessageHeader.CreateHeader( 11 "header", "uid", UId); 12 MessageHeader myHeaderPwd= MessageHeader.CreateHeader( 13 "header", "pwd", Pwd); 14 OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderUid); 15 OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderPwd); 16 Console.WriteLine(userClient.User()); 17 } 18 }
第二步:服务端编码
首先:开始检索头消息
int uIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "uid");(注意保持与客户端的保持一致,得到的是索引也就是头信息位置(如果index=-1就表示没有头消息))
1 Dictionary<string,string> AllUsers =new Dictionary<string, string>(10); 2 public bool User() 3 { 4 InsertUser();//模拟数据库动态添加用户 5 string Uid = string.Empty; 6 string Pwd = string.Empty; 7 bool result = false; 8 int uIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "uid"); 9 int pwdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "pwd"); 10 if (uIdIndex != -1) 11 { 12 Uid = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(uIdIndex); 13 } 14 if (pwdIndex!=-1) 15 { 16 Pwd = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(pwdIndex); 17 } 18 if (AllUsers.ContainsKey(Uid)) 19 { 20 if (AllUsers[Uid] == Pwd) 21 { 22 result = true; 23 } 24 25 } 26 return result; 27 } 28 29 private void InsertUser() 30 { 31 AllUsers.Add("admin","123456"); 32 AllUsers.Add("sa","123456"); 33 AllUsers.Add("ldc","123456"); 34 AllUsers.Add("zd","123456"); 35 }
这样就简单的把头消息验证用户完成了,我写的有很多不好的地方大家看到了可以提出来,共同学习。下一篇着手写消息协定和数据协定。
源码下载
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何0基础学习C/C++? 2020-06-06
- vtk学习记录(三)——初识vtkRenderer 2020-05-16
- 博弈--尼姆博弈 2020-05-03
- C代做 C++代做 C++编程代做 C++程序代做 2020-04-29
- C++基础 学习笔记六:复合类型之数组 2020-04-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash