在WCF服务端,执行某些客户端请求的时候,需要获取到客户端的身份信息,借此来判断权限,或记录此人的操作等等,这就需要从服务端获取客户端的信息(并不是IP信息),例如ID、单位、权限等。 那么假如要这样做,用哪种方式实现呢?本人尝试了Message身份验证,但似乎无法从服务端获取UserName;而Header的实现又使得每次请求变得繁琐… 所以想请求各位老师,有没有什么办法能满足这样的身份识别需求:
①不借助IP或端口,可自定义身份信息
②客户端只需进行一次认证过程,不需要每次请求时都校验身份信息
③可以从服务端执行请求时轻松获取到这个身份信息,以便知道当前执行的是哪个用户的请求
④只要客户端没有断开,这个身份信息就是持久的
本人想说,其实本人想做的是相似.Net2.0那种SoapUserHeader的方式,指定一次UserHeaderValue后,就不用再进行额外认证,而服务端可随时获取到这个数据。
希望各位老师能提供一个相对完美的办法,最好能贴部分代码,谢谢。
①不借助IP或端口,可自定义身份信息
②客户端只需进行一次认证过程,不需要每次请求时都校验身份信息
③可以从服务端执行请求时轻松获取到这个身份信息,以便知道当前执行的是哪个用户的请求
④只要客户端没有断开,这个身份信息就是持久的
本人想说,其实本人想做的是相似.Net2.0那种SoapUserHeader的方式,指定一次UserHeaderValue后,就不用再进行额外认证,而服务端可随时获取到这个数据。
希望各位老师能提供一个相对完美的办法,最好能贴部分代码,谢谢。
解决方案:200分
还没有看到这个章节吗?看看吧
https://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute.sessionmode(v=vs.90).aspx
https://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute.sessionmode(v=vs.90).aspx