Rest Web Services和多个客户端的会话处理



我一直在为android本机应用程序开发RESTful Web服务。我选择了ASP.NETWEB API。WEB API使在控制器中创建这些HTTP方法变得非常容易,并将我们的响应对象转换为json/xml。。。简直太棒了!

现在是用户身份验证和会话处理部分。首先,我认为在RESTful服务中实现会话会更容易。但对于在WEBneneneba API中启用会话并使android原生处理这些会话ID的配置,真的很失望。

  1. 首先,Android向WEB API发送登录请求
  2. WEB API检查身份验证,并在响应头中使用sessionid进行响应
  3. 现在Android本机读取响应标头->获取ASPNET_sessionId->保存在它的记忆中
  4. 来自android的进一步请求必须在请求头中设置此ASPNET_sessionId

你认为这是正确的方式吗

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

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

如何管理混合应用程序的会话

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

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

REST是无状态的。那么,为什么我们需要玩会话呢?给它一种有状态的生活?

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

混合应用中的跨域问题

当将应用程序转换为与cordova的混合应用程序时,我们发现跨域问题并没有发生。据信,cordova转换了jqueryajax请求到来自android的本地请求调用。jsonp也是一个很好的解决方案。

最新更新