WCF并存储身份验证信息

时间:2012-01-11 09:06:19

标签: c# asp.net wcf forms-authentication

让我有一些WCF服务。我需要的是存储与经过身份验证的用户相关的其他数据,以便立即获取此信息(无需从数据存储中查询)。 我想知道实现它的最佳实践。我假设可以使用以下替代方案:

1)使服务AspnetCompatible并使用Forms身份验证,HttpContext和Cache。关于这个替代方案,我想知道使用它的缺点。

2)按会话进行服务(InstanceContextMode.PerSession)。至于我,这个选项的主要缺点是它可能会导致可伸缩性问题。据我所知,basicHttpBinding不支持每个会话模式(也就是说,它不适用于Silverlight应用程序)。

那么,您如何看待它以及您建议使用什么?

1 个答案:

答案 0 :(得分:1)

您始终可以获得如下用户名:

OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name

你甚至可以获得密码,虽然它有点复杂。 Rory Primrose explains it in his article

您需要哪些其他信息,以及什么阻止您在通话之间将其存储在内存中?

编辑:

Scalibity是一个有效的关注点,理想情况下我坚持PerCall实例化。在调用之间共享信息的简单方法与在非WCF上下文中的实例之间共享信息没有任何不同 - 即静态。