为多个客户端提供Web服务和会话处理

时间:2014-02-12 08:27:29

标签: c# android web-services rest asp.net-web-api

我一直致力于为一个Android本机应用程序使用RESTful webservice。我选择ASP .NET WEB API。 WEB API使得在控制器中创建这些HTTP方法变得非常容易,并将我们的响应对象转换为json / xml ......简直太棒了!

现在有用户身份验证和那些会话处理部分。首先,我认为在我的RESTful服务中实现会话会更容易。但是对于在WEB API中启用会话的配置以及使android本机处理这些会话ID感到非常沮丧。

  1. 首先,Android向WEB API发送登录请求
  2. WEB API检查身份验证,并在响应标头中使用sessionid进行响应
  3. 现在Android原生读取响应标题 - >取出ASPNET_sessionId - >保留在其内存中
  4. 来自android的进一步请求必须在请求标头
  5. 中设置此ASPNET_sessionId

    您认为这是一种正确的方法吗?

    现在我有另一个客户。 Mobile jquery中的混合应用程序。现在面临以下问题:

    • 访问源策略:因此我在响应标头中将Access-Control-Allow-Origin设置为*。它解决了。
    • 现在我需要在jquery ajax post请求中设置会话ID。并且发现在调用跨域服务时无法为jquery ajax设置标头。

    如何管理混合应用的会话?

    此外,在创建必须从不同客户端应用程序中使用的Web服务时,需要注意哪些事项?

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我得出以下几点:

REST无国籍。那么为什么我们需要玩会话呢?通过给它一个有状态的生活?

  

无需启用会话状态。当用户登录时   应用程序我们在数据库中为用户创建唯一的ID。进一步   来自用户的请求将发送此唯一ID作为消息的一部分   身体。服务器每次都会检查此唯一ID以识别用户。

混合应用中的跨域问题

  

当使用cordova将app转换为hybrid时,我们发现了跨域   问题没有发生。据信,科尔多瓦转换了jquery   ajax请求来自android的本机请求调用。 jsonp也发现是一个很好的解决方案。