WCF服务端识别客户端身份的问题

为轮子而生 2015-11-15 03:37:44
在WCF服务端,执行某些客户端请求的时候,需要获取到客户端的身份信息,借此来判断权限,或者记录此人的操作等等,这就需要从服务端获取客户端的信息(并不是IP信息),比如ID、单位、权限等。 那么如果要这样做,用哪种方式实现呢?我尝试了Message身份验证,但似乎无法从服务端获取UserName;而Header的实现又使得每次请求变得繁琐… 所以想请求各位老师,有没有什么办法能满足这样的身份识别需求:

①不借助IP或端口,可自定义身份信息
②客户端只需进行一次认证过程,不需要每次请求时都校验身份信息
③可以从服务端执行请求时轻松获取到这个身份信息,以便知道当前执行的是哪个用户的请求
④只要客户端没有断开,这个身份信息就是持久的

我想说,其实我想做的是类似.Net2.0那种SoapUserHeader的方式,指定一次UserHeaderValue后,就不用再进行额外认证,而服务端可随时获取到这个数据。

希望各位老师能提供一个相对完美的办法,最好能贴部分代码,谢谢。
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
为轮子而生 2015-11-15
  • 打赏
  • 举报
回复
引用 7 楼 ajianchina 的回复:
还没有看到这个章节吗?看看吧 https://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute.sessionmode(v=vs.90).aspx
多谢! 一语浇醒梦中人
ajianchina 2015-11-15
  • 打赏
  • 举报
回复
还没有看到这个章节吗?看看吧 https://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute.sessionmode(v=vs.90).aspx
为轮子而生 2015-11-15
  • 打赏
  • 举报
回复
引用 5 楼 wyd1520 的回复:
即然又觉的没意义,那就每次就老实的去请求请求时都校验身份信息。不就完了么,这无非要么验证要么不验证。。 要不再下去就会精神分例了。。。
唉,我也快疯了。我是想说“让客户端记住用户信息”是没意义的,因为我是想“在服务端知道客户端的用户信息”。比如客户端的用户,他的ID是1,我怎么才能让客户端每次调用服务的时候,服务端都知道这个ID呢?难道非要每次都发送一下用户信息吗? 没有什么办法让这个ID存在服务端,并使它与客户端的连接相对应吗?
本拉灯 2015-11-15
  • 打赏
  • 举报
回复
引用 4 楼 rocmemory 的回复:
[quote=引用 3 楼 wyd1520 的回复:] 你不会首次登录后,把用户信息缓存到客户端内存么。。。非得每次请求。。。
这样做有什么意义呢,我是想每次调用服务的时候,服务端要知道客户端的身份,你说的正好相反呀[/quote] 即然又觉的没意义,那就每次就老实的去请求请求时都校验身份信息。不就完了么,这无非要么验证要么不验证。。 要不再下去就会精神分例了。。。
为轮子而生 2015-11-15
  • 打赏
  • 举报
回复
引用 3 楼 wyd1520 的回复:
你不会首次登录后,把用户信息缓存到客户端内存么。。。非得每次请求。。。
这样做有什么意义呢,我是想每次调用服务的时候,服务端要知道客户端的身份,你说的正好相反呀
本拉灯 2015-11-15
  • 打赏
  • 举报
回复
你不会首次登录后,把用户信息缓存到客户端内存么。。。非得每次请求。。。
为轮子而生 2015-11-15
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
但 SoapUserHeader 是每次请求时都校验身份信息的
如果用XML Web Service,只要指定一次UserHeader的值,以后请求的时候,即使不再发送这个身份信息,也可以在WebMethod方法中直接获取到的,我说的这种是2.0的WebService,而不是3.0以后的服务引用,服务引用确实是每次调用都要发送UserHeader的 另外,版主大人,您知道指定了ClientCredentials.UserName后,如何在服务端获取这个UserName信息吗?
xuzuning 2015-11-15
  • 打赏
  • 举报
回复
但 SoapUserHeader 是每次请求时都校验身份信息的

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧