WCF服务IIS为外部客户端构建用户记录的服务

时间:2014-12-02 08:52:57

标签: c# asp.net web-services wcf iis

我开始使用.net和wcf服务,如果我提出的问题是错误的或者是nosense,那就很抱歉。顺便说一句,也很抱歉我的英语。

我正在尝试构建在IIS上托管的多个WCF服务,其中Internet客户端可以使用其用户名/密码登录(信息存储在db中)。记录后,他们可以访问他们的信息,查看他们的私人文档,更改他们的个人资料以及与他们的帐户相关的更多操作。

好吧,在asp.net中,如果我在成功登录后获得会话,我可以构建像“GetMyDocs”这样的服务,我知道“谁是谁”,只需在调用登录时检查存储有会话ID的会话用户名。他的会议没有超时。但我注意到WCF服务是无状态的,所以这似乎我必须在所有请求中发送用户名/密码并在执行服务之前在数据库中检查它们...总是!?

稍后,如果我想构建客户端桌面/ Android / iOS应用程序,我将使用这些服务。然后,他们可以在成功登录后通过这些应用程序管理他们的个人和私人数据。

我应该如何处理? WCF服务是否可行?或者WCF不是一个好的选择? 如何使用WCF处理用户标识?因为我的所有服务都链接到用户和“GetMyDocs”,“SaveNewConfig”,“PayItem”......需要识别谁在呼叫。

提前致谢!!此致!

2 个答案:

答案 0 :(得分:0)

  

但我注意到WCF服务是无状态的

这种说法有点不对劲。因为您可以轻松创建启用了状态的“基于WCF”的Web服务。此外,国家是一个广泛的术语,这里不值得报道。例如,您可以将会话状态与WCF服务一起使用,或者您可以将服务的InstanceContextMode属性设置为以下之一:

  • PerCall
  • PerSession

当然,这完全取决于您如何配置服务本身。

如果您的服务需要由不同的客户端使用,您应该考虑实施RESTful服务以及OAuth 2.0或类似的东西,您可以使用Basic Authentication header或发出{{3}来验证请求验证成功后。

答案 1 :(得分:0)

有许多方法可以为WCF服务提供身份验证。其中一个是使用会话(basicHttp不支持会话,你必须使用wshttp,或任何其他支持会话的传输)。但是,启用会话是一个巨大的开销,只是为了避免在每个请求上发送凭据。

会话可以减少可扩展性,但如果你不担心它......这是一个选择。