我们一起学习WCF第三篇头消息验证用户身份

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

前言:今天我主要写的是关于头消息的一个用处验证用户信息

下面我画一个图,可以先看图

第一步:我们先开始做用户请求代码

首先:创建一个可执行的上下文对象块并定义内部传输的通道

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这样就完成客户端的编码

1ValidUserClient userClient =newValidUserClient();2while(true)3{4Console.Write("用户名:");5stringUId =Console.ReadLine();6Console.Write("密码:");7stringPwd =Console.ReadLine();8using(OperationContextScope scope =newOperationContextScope(userClient.InnerChannel))//创建一个可执行的上下文对象块并定义内部传输的通道9{10MessageHeader myHeaderUid =MessageHeader.CreateHeader(11"header","uid", UId);12MessageHeader myHeaderPwd=MessageHeader.CreateHeader(13"header","pwd", Pwd);14OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderUid);15OperationContext.Current.OutgoingMessageHeaders.Add(myHeaderPwd);16Console.WriteLine(userClient.User());17}18}

客户端编码

第二步:服务端编码

首先:开始检索头消息

int uIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header", "uid");(注意保持与客户端的保持一致,得到的是索引也就是头信息位置(如果index=-1就表示没有头消息))

然后:通过索引来获取头消息内容

Uid = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(uIdIndex);

最后:我们就进行逻辑判断

1Dictionary<string,string> AllUsers =newDictionary<string,string>(10);2publicboolUser()3{4InsertUser();//模拟数据库动态添加用户5stringUid =string.Empty;6stringPwd =string.Empty;7boolresult =false;8intuIdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header","uid");9intpwdIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("header","pwd");10if(uIdIndex != -1)11{12Uid = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(uIdIndex);13}14if(pwdIndex!=-1)15{16Pwd = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(pwdIndex);17}18if(AllUsers.ContainsKey(Uid))19{20if(AllUsers[Uid] ==Pwd)21{22result =true;23}2425}26returnresult;27}2829PRivatevoidInsertUser()30{31AllUsers.Add("admin","123456");32AllUsers.Add("sa","123456");33AllUsers.Add("ldc","123456");34AllUsers.Add("zd","123456");35}

服务端编码

这样就简单的把头消息验证用户完成了,我写的有很多不好的地方大家看到了可以提出来,共同学习。下一篇着手写消息协定和数据协定。

源码下载

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有