利用WCF共享ASP.NET session实现WCF服务端验证
WCF能够共享ASP.NET的session,不同的WCF客户端代理类在采用Per Call模式下访问WCF能够访问同一个ASP.NET Session.但是WCF的Session和ASP.NET的Session是不同的。
- WCF的Session代表着服务实例,它是被客户端代理类访问时初始化的。WCF依靠消息通道,安全回话和消息模式等来联系session的。
- 而ASP.NET的session是类似服务端的一种存储数据的模式。它是通过客户端cookie和uri来维护session的
1. 利用ASP.NET的session实现认证,在aspx里记录用户认证信息:
2. 如果WCF服务端能够共享Asp.NET的session,必须在WCF配置文件中进行如下设置:
3.在服务端新建一个用户类: 4. 在WCF服务端可以利用共享的session来判断权限: 5.在客户端获取sessionId,我们可以通过Cookie获取客户端的sessionId httpSessionCookieHelper是从cookie中获取sessionId的(CookieName 是“ASP.NET_SessionId”)这样我们可以在第一次调用的回复中获取sessionId
注:第5点可以参照:http://blogs.msdn.com/b/wenlong/archive/2010/02/21/using-asp-net-sessions-from-wcf.aspx